【发布时间】:2014-05-19 14:35:35
【问题描述】:
我希望我的玩家在玩家点击屏幕左侧时向左移动。现在,我的播放器仅在我按住鼠标按钮时移动。我真正想要的是让他不断向左移动,直到我按下一次屏幕时他达到目标位置。
有人可以告诉我我的代码中缺少什么以允许这种情况发生吗?
void FixedUpdate()
{
if(Input.GetMouseButtonDown(0))
{
if(Input.mousePosition.x < (Screen.width*2)/3 && Input.mousePosition.y > Screen.height/3)
{
if(position == middle)
{
MoveLeft();
}
}
}
}
void MoveLeft()
{
var pos = rigidbody.position;
float xPosition = left.transform.position.x;
pos.x = Mathf.Lerp(pos.x, xPosition, speed * Time.deltaTime);
rigidbody.position = pos;
}
我的方法是在 FixedUpdate 中,因为我正在移动玩家刚体而不是平移实际玩家。
【问题讨论】:
-
我必须查一下,lerp = 线性插值 ;)
-
是的。这意味着在两点之间平滑移动一个对象。有一个 slerp 做同样的事情,但在球形运动中,对轨道等非常好。但不是我可以在这里使用的 :(
-
对于初学者来说,如果你从 FixedUpdate() 调用方法,你应该使用 Time.fixedDeltaTime
标签: c# input unity3d rigid-bodies