我不确定如何标题,但我会解释我的意思。我试图让我的游戏对象移动:
transform.translate(Vector2.up \* moveSpeed * time.deltaTime);
现在我想做的是造成一些麻烦的原因。我希望对象继续移动,直到它达到Y值为1,然后向左转。我几乎有这个工作。如果我使用> = 1,看它会工作,因为它跳过值1(不是由波动的整数移动)。即使我尝试将其更改为== 1.0f,它仍然无法正常工作,因为我猜对象移动得太快并且跳过某些值。我们已经尝试将其重新定位在> =代码块中,但是这些错误并没有发挥作用。
如果您有任何想法或可能的解决方案,那就太棒了!谢谢! :-D
代码:
if (transform.position.x <= -2 && transform.position.y < -1) {
transform.Translate(Vector2.up * playerSpeed * Time.deltaTime);
}
else if (transform.position.y <= -4)
{
transform.Translate(Vector2.left * playerSpeed * Time.deltaTime);
}
答案 0 :(得分:1)
我无法真正匹配你想要的gif。虽然,当您考虑添加名为didCollidHappen的bool值并在脚本中实现OnCollideEnter方法时,您需要的是相当简单的。 这样做,当您在每个帧调用Update时,您将验证是否存在任何冲突,然后调用代码以使您的游戏对象跳转。以下是代码片段。将其插入C#脚本: - )
public bool didCollideHappen =false;
public void OnCollideEnter(Collision col)
{
if(col.gameObject.tag == "Something")//if it's any game object, then just put bool value to true !!
{
didCollidedHappen = true;
}
}
public void MakeSlowedJump()
{
actualSpeed -= slowAmount * Time.fixedDeltaTime;
transform.position += new Vector3 (0.13F, actualSpeed * Time.fixedDeltaTime, 0);
}
public void Update()
{
if(didCollideHappen)
MakeSlowedJump();
}