我正在尝试在Unity 4中进行3D观看模拟,用户可以选择一个对象并移动鼠标使其绕其旋转(360度)。帮助将不胜感激,如果它是用C#编写的,那就太好了!(但这不是必须的)在此先感谢!
这是一种不同而有趣的方式:)(我使用它)
(这里,多维数据集是目标)
1)创建球体-名称:“摄影机轨道”-添加材质:透明(Alpha = 0)-根据需要缩放-旋转:(0,0,0.1f)
2)将摄影机作为“子级”添加到摄影机轨道表面。位置=(0,“ y =摄像机轨道比例 ”,0)旋转=(90,0,0)
3)创建空GameObject- 名称:输入控件。
InputControl.cs:
public class InputControl : MonoBehaviour { public GameObject cameraOrbit; public float rotateSpeed = 8f; void Update() { if (Input.GetMouseButton(0)) { float h = rotateSpeed * Input.GetAxis("Mouse X"); float v = rotateSpeed * Input.GetAxis("Mouse Y"); if (cameraOrbit.transform.eulerAngles.z + v <= 0.1f || cameraOrbit.transform.eulerAngles.z + v >= 179.9f) v = 0; cameraOrbit.transform.eulerAngles = new Vector3(cameraOrbit.transform.eulerAngles.x, cameraOrbit.transform.eulerAngles.y + h, cameraOrbit.transform.eulerAngles.z + v); } float scrollFactor = Input.GetAxis("Mouse ScrollWheel"); if (scrollFactor != 0) { cameraOrbit.transform.localScale = cameraOrbit.transform.localScale * (1f - scrollFactor); } } }
CameraController.cs:
public class CameraController : MonoBehaviour { public Transform cameraOrbit; public Transform target; void Start() { cameraOrbit.position = target.position; } void Update() { transform.rotation = Quaternion.Euler(transform.rotation.x, transform.rotation.y, 0); transform.LookAt(target.position); } }
4)将CameraController.cs添加到Camera。
5)将InputControl.cs添加到Input Control。
6)在脚本中设置公共变量。(“摄像机轨道”和“目标”)
就这样。鼠标单击并拖动:旋转-鼠标拖动:放大。
ps。如果需要,可以将目标更改为运行时。