我想通过鼠标在-20°和+ 20°之间移动来旋转GameObject。
我知道有可能获得平滑的输入
Input.GetAxis("Horizontal");
和Input.GetAxis("Vertical");
返回-1
和1
之间的浮点值
如果有类似的东西会很好
Input.GetMouseAxis("Horizontal");
或Input.GetMouseAxis("Horizontal");
。
但我的输出不应受键盘的影响。 对不起,我对Unity及其API没有多少经验。
答案 0 :(得分:1)
鼠标在屏幕分辨率中“捕获”统一或我应该怎样 将鼠标位置缩放到介于-1和1之间的值?
在这种情况下,“normalizedSpeed”将成为您的目标
public float mouseDistance;
public Vector2 mouseDown = -Vector2.one;
public float normalizedSpeed;
public void Update()
{
if(Input.GetMouseButtonDown(0))
mouseDown = Input.MousePosition();
if(Input.GetMouseButtonUp(0))
mouseDown = -Vector2.one;
if(Input.GetMouseButton(0))
normalizedSpeed = mouseDown != -Vector2.one ?
Mathf.Clamp((mouseDown - Input.MousePosition()).sqrMagnitude, 0, (mouseDistance * mouseDistance)) / (mouseDistance * mouseDistance)
: 0;
}
我使用sqrMagnitude而不是distance,因为distance()中的sqr根调用占用了大量内存,因此比较平方距离与其他距离更快
另外请记住,我将其视为伪代码,因此总体思路是我想要的,我会让你在语法上对实现负责;)