【发布时间】:2021-08-09 03:55:03
【问题描述】:
我试图让我的精灵每隔一段时间移动一个单位。它一直有效,直到同时按住多个键。如果是这种情况,它会朝一个方向移动,具体取决于代码中首先编程的方向。对我来说,似乎我的精灵应该双向移动,因为 if 语句不是 if else 语句。如果我向上并向左移动,它应该向上移动 1 个单位,向左移动 1 个单位。我怎样才能让它做到这一点?
public Transform timmyTransform;
private float timer= 0;
public float movementDelay;
void Update()
{
timer += Time.deltaTime;
if (Input.GetAxis("Vertical") < 0 && timer > movementDelay)
{
timer = 0;
timmyTransform.transform.position += new Vector3(0, -1, 0);
}
if (Input.GetAxis("Vertical") > 0 && timer > movementDelay)
{
timer = 0;
timmyTransform.transform.position += new Vector3(0, 1, 0);
}
if (Input.GetAxis("Horizontal") < 0 && timer>movementDelay)
{
timer = 0;
timmyTransform.transform.position += new Vector3(-1, 0, 0);
}
if(Input.GetAxis("Horizontal") > 0 && timer > movementDelay)
{
timer = 0;
timmyTransform.transform.position += new Vector3(1, 0, 0);
}
}
【问题讨论】:
-
嗯,您似乎设置了
timer = 0,因此对timer > movementDelay的后续检查将返回 false 并跳过其余说明。 (我认为movementDelay永远不会是负面的......) -
添加到@Alphaharrius 评论,你可能想要一个
bool moved,如果你击中其中一个块,将其设置为true,然后最后将计时器归零。
标签: c# visual-studio unity3d