我的应用(使用Unity 2017.3.1f1)的设置如下:
Cursor.lockState = CursorLockMode.Locked
和Cursor.visible = false
)我要实现的目标:
Lerp
,我只想在使用鼠标滚轮的每一帧中将播放器向目标位置移动一步我尝试过的事情:
1a。在常规输入脚本中:
if(Input.GetAxis("Mouse ScrollWheel") != 0) {
transform.Translate(0,0,Input.GetAxis("Mouse ScrollWheel") * 200);
}
1b:在常规输入脚本中:
if(Input.GetAxis("Mouse ScrollWheel") != 0) {
transform.position += transform.forward * Input.GetAxis("Mouse ScrollWheel") * 200;
}
两者的工作原理相同,但即使向下/向上看,也只能将播放器/相机移动到相同的y水平。 transform.up
始终输出“(0.0,1.0,0.0)”,因此没有必要将其合并。
2。相机上的新脚本(source):
public class ScrollToZoom : MonoBehaviour {
public GameObject player;
void Update () {
if(Input.GetAxis("Mouse ScrollWheel") != 0) {
RaycastHit hit;
Ray ray = this.transform.GetComponent<Camera>().ScreenPointToRay(Input.mousePosition);
Vector3 desiredPosition;
if(Physics.Raycast(ray,out hit)) {
desiredPosition = hit.point;
} else {
desiredPosition = transform.position;
}
float distance = Vector3.Distance(desiredPosition,transform.position);
Vector3 direction = Vector3.Normalize(desiredPosition - transform.position) * (distance * Input.GetAxis("Mouse ScrollWheel"));
transform.position += direction;
}
}
}
这根本不起作用,因为“方向”始终为(0,0,0),因为鼠标光标已锁定(我无法/不会更改)。
您如何在其中合并围绕x轴的旋转(我在“ MouseLook”脚本中将其固定为+/- 90°)?
答案 0 :(得分:0)
if(Input.GetAxis("Mouse ScrollWheel") != 0) {
transform.localPosition += Vector3.forward * Input.GetAxis("Mouse ScrollWheel") * 200;
}
应该工作。 transform.position
将参考世界位置,而不管对象面对的位置。