1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【Unity开发小技巧】模型单指旋转双指缩放功能代码(多种情况)

【Unity开发小技巧】模型单指旋转双指缩放功能代码(多种情况)

时间:2019-09-02 15:44:24

相关推荐

【Unity开发小技巧】模型单指旋转双指缩放功能代码(多种情况)

欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

1.pc端通过鼠标中键调整相机的FieldOfView属性的值(会发生形变不建议)

void Update(){if (Input.GetAxis("Mouse ScrollWheel") < 0){Camera.main.fieldOfView += 2;Camera.main.fieldOfView = Camera.main.fieldOfView >= 90 ? 90 : Camera.main.fieldOfView;if (Camera.main.orthographicSize <= 20)Camera.main.orthographicSize += 0.5F;}if (Input.GetAxis("Mouse ScrollWheel") > 0){Camera.main.fieldOfView -= 2;Camera.main.fieldOfView = Camera.main.fieldOfView <= 30 ? 30 : Camera.main.fieldOfView;if (Camera.main.orthographicSize >= 1)Camera.main.orthographicSize -= 0.5F;}// 鼠标轴控制相机的远近//if ((Input.mouseScrollDelta.y < 0 && Camera.main.fieldOfView >= 3) || Input.mouseScrollDelta.y > 0 && Camera.main.fieldOfView <= 80)//{// Camera.main.fieldOfView += Input.mouseScrollDelta.y * camDepthSmooth * Time.deltaTime;//}}

2.移动端通过控制模型的Scale属性

public static Vector3 currentScale;private Touch oldTouch1;private Touch oldTouch2;void Update(){if (Input.GetMouseButton(0)){//单指滑动旋转if (Input.touchCount == 1){Touch touch = Input.GetTouch(0);Vector2 deltaPos = touch.deltaPosition;if (touch.phase == TouchPhase.Moved){transform.Rotate(new Vector3(deltaPos.y, -deltaPos.x, 0) * 0.5f, Space.Self);}}if (Input.touchCount == 2){//缩放Touch newTouch1 = Input.GetTouch(0);Touch newTouch2 = Input.GetTouch(1);if (newTouch2.phase == TouchPhase.Began){oldTouch2 = newTouch2;oldTouch1 = newTouch1;return;}float oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position);float newDistance = Vector2.Distance(newTouch1.position, newTouch2.position);float offset = newDistance - oldDistance;float scaleFactor = offset / 200f;Vector3 localScale = transform.localScale;Vector3 scale = new Vector3(localScale.x + scaleFactor, localScale.y + scaleFactor, localScale.z + scaleFactor);//限制最低最高值if ((scale.x >= 0.5f && scale.x <= 3) && (scale.y >= 0.5f && scale.y <= 3f) && (scale.z >= 0.5f && scale.z <= 3f)){transform.localScale = scale;currentScale = scale;}oldTouch1 = newTouch1;oldTouch2 = newTouch2;}}}

3.pc端鼠标旋转缩放

Vector3 mPrevPos;void Update(){if (Input.GetMouseButton(0)){Vector3 deltaPos = Input.mousePosition - mPrevPos;transform.Rotate(new Vector3(deltaPos.y, -deltaPos.x, 0) * Time.deltaTime*10,Space.World);}mPrevPos = Input.mousePosition;if (Input.GetAxis("Mouse ScrollWheel") < 0){transform.localScale -= Vector3.one * 0.1f;}if (Input.GetAxis("Mouse ScrollWheel") > 0){transform.localScale += Vector3.one * 0.1f;}}

欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。