移动位置等于int
Movement Position Being Equal to Int
我不太确定如何命名这个标题,但我会解释我的意思。我正在尝试让我的游戏 object 移动使用:
transform.translate(Vector2.up \* moveSpeed * time.deltaTime);
现在我接下来要做的是造成一些麻烦的原因。我希望 object 继续移动直到它达到 Y 值 1,然后向左转。我几乎有那个工作。如果我使用 >= 1,请看它会起作用,因为它会跳过 1 的值(不会通过不稳定的整数移动)。即使我尝试将其更改为 == 1.0f,它仍然无法正常工作,因为我猜 object 移动得太快并跳过了一些值。我们已经在 >= 代码块中尝试 re-positioning 它,但它出现了错误并且效果不佳。
如果您有任何想法或可能的解决方案,那就太好了!谢谢! :-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);
}
我无法从你的 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();
}
我不太确定如何命名这个标题,但我会解释我的意思。我正在尝试让我的游戏 object 移动使用:
transform.translate(Vector2.up \* moveSpeed * time.deltaTime);
现在我接下来要做的是造成一些麻烦的原因。我希望 object 继续移动直到它达到 Y 值 1,然后向左转。我几乎有那个工作。如果我使用 >= 1,请看它会起作用,因为它会跳过 1 的值(不会通过不稳定的整数移动)。即使我尝试将其更改为 == 1.0f,它仍然无法正常工作,因为我猜 object 移动得太快并跳过了一些值。我们已经在 >= 代码块中尝试 re-positioning 它,但它出现了错误并且效果不佳。
如果您有任何想法或可能的解决方案,那就太好了!谢谢! :-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);
}
我无法从你的 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();
}