单击鼠标时多维数据集不会旋转



此代码工作并旋转立方体

public float Speed;
void Update()
{
transform.Rotate(Vector3.up * Speed * Time.deltaTime);
}

但这不起作用:
我试图在鼠标左键单击时向左旋转,并在鼠标右键单击时向右旋转。只点击片刻,不按住。:

public float Speed;
void Update()
{
if (Input.GetMouseButtonDown(0)) // left mouse clicked.
{
transform.Rotate(Vector3.up * Speed * Time.deltaTime);
}
else if (Input.GetMouseButtonDown(1)) // right mouse clicked.
{
transform.Rotate(Vector3.down * Speed * Time.deltaTime);
}        
}

我该怎么解决这个问题?

注意:
我已经附上了脚本,
它的速度是250。

谢谢。

使用Input.GetMouseButton(0)而不是Input.GetMouseButtonDown(0)。对于你的代码来说,每次点击都会旋转,但如果速度不够大,你甚至不会注意到。使用Input.GetMouseButton(0)时,立方体将旋转,同时按下按钮。

GetMouseButtonDown在按下按钮的帧中执行一次。GetMouseButtonUp也是如此,您正在寻找Input.GetMouseButton,当按下按钮时,每个帧都会返回true。

因此,每次按下按钮时都会执行您的代码,然后您需要释放它才能再次工作。

public float Speed;
void Update()
{
if (Input.GetMouseButton(0)) // sol mouse tıklandı
{
transform.Rotate(Vector3.up * Speed * Time.deltaTime);
}
else if (Input.GetMouseButton(1)) // sağ mouse tıkladı
{
transform.Rotate(Vector3.down * Speed * Time.deltaTime);
}        
}

要自己调试这些问题,您可以放置Debug.Log("Works?")来检查您的代码是否达到给定的点,或者附加调试器

最好的方法是检查点击,然后运行协同程序几秒钟/a以循环固定的圈数,如果按住鼠标按钮。

好的,我发现了一些东西:

public float Speed;
void Update()
{
if (Input.GetMouseButtonDown(0)) 
{
transform.Rotate(Vector3.up * Speed * Time.deltaTime);
}
else if (Input.GetMouseButtonDown(1))
{
transform.Rotate(Vector3.down * Speed * Time.deltaTime);
}
}

这将以固定的量旋转对象。当您按下鼠标按钮0或1时。


public float Speed;
void Update()
{
if (Input.GetMouseButton(0)) 
{
transform.Rotate(Vector3.up * Speed * Time.deltaTime);
}
else if (Input.GetMouseButton(1))
{
transform.Rotate(Vector3.down * Speed * Time.deltaTime);
}
}

当按下鼠标按钮时,这将(如怀疑的那样(旋转对象。

我的朋友已经解决了这个问题:

public class Rotator2 : MonoBehaviour
{
bool Forward = true;
public float Speed;
void Start()
{
Forward = true;
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Forward = true;
}
if (Input.GetMouseButtonDown(1))
{
Forward = false;
}
transform.Rotate(Vector3.up, (Forward ? 1 : -1) * Speed * Time.deltaTime);
}
}

使用enum而不是使用bool:的代码相同

enum Direction
{
None,
Forward,
Backward
}
public class Rotator2 : MonoBehaviour
{
Direction Direction = Direction.Forward;
public float Speed;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Direction = Direction.Forward;
}
if (Input.GetMouseButtonDown(1))
{
Direction = Direction.Backward;
}

transform.Rotate(Vector3.up, (Direction== Direction.Forward ? 1 : -1 ) * Speed * Time.deltaTime);            
}
}

最新更新