概述
using UnityEngine;
using System.Collections;
public class ModelRotationScript : MonoBehaviour {
public GameObject model;
//目标物体
public Camera myCamera;
//摄像机
Vector2 first = Vector2.zero;
//记录鼠标点击的初始位置
Vector2 second = Vector2.zero;
//记录鼠标移动时的位置
bool directorToLeft = false;
bool directorToRight = false;
bool directorToUp = false;
bool directorToDown = false;
bool dragging = false;
//标记是否鼠标在滑动
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if(Input.GetMouseButton(0)) {
Ray ray =myCamera.ScreenPointToRay (Input.mousePosition);
RaycastHit hit ;
if (Physics.Raycast (ray, out hit)) {
//
print(hit.collider.gameObject.name);
if (hit.collider.gameObject.name == "3D Model" && dragging == true) {
Vector3 newPosition = Vector3.zero;
float speed = 0;
if (directorToLeft == true) {
newPosition = new Vector3 (0, -1, 0);
speed = 15;
print ("left");
}
if (directorToRight == true){
speed = 10;
newPosition = new Vector3 (0, 1, 0);
print ("right");
}
if (directorToUp == true) {
speed = 15;
newPosition = new Vector3 (1, 0, 0);
print ("up");
}
if (directorToDown == true){
speed = 10;
newPosition = new Vector3 (-1, 0, 0);
print ("down");
}
GetComponent<Camera>().transform.RotateAround (model.transform.localPosition, newPosition, speed * Time.deltaTime);
}
}
}
}
void OnGUI() {
if(Event.current.type == EventType.MouseDown){
//记录鼠标按下的位置
first = Event.current.mousePosition ;
}
dragging = false;
if(Event.current.type == EventType.MouseDrag){
//记录鼠标拖动的位置
dragging = true;
second = Event.current.mousePosition ;
Vector2 slideDirection = second - first;
float x = slideDirection.x, y = slideDirection.y;
if(y < x && y > -x) {
// right
directorToLeft = false;
directorToRight = true;
directorToUp = false;
directorToDown = false;
} else if(y > x && y < -x) { // left
directorToLeft = true;
directorToRight = false;
directorToUp = false;
directorToDown = false;
} else if(y > x && y > -x) { // up
directorToLeft = false;
directorToRight = false;
directorToUp = true;
directorToDown = false;
}
else {
// down
directorToLeft = false;
directorToRight = false;
directorToUp = false;
directorToDown = true;
}
}
}
}
最后
以上就是搞怪奇迹为你收集整理的【Unity 3D学习】获取鼠标滑动方向(上下左右)-控制摄像机围绕物体旋转的全部内容,希望文章能够帮你解决【Unity 3D学习】获取鼠标滑动方向(上下左右)-控制摄像机围绕物体旋转所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复