public class spring : MonoBehaviour
{
[SerializeField] public float jumpHeight = 10f;
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
collision.gameObject.GetComponent<Rigidbody2D>().AddForce(Vector2.up * jumpHeight, ForceMode2D.Impulse);
}
}
}
我做了一个向上的弹簧,它很容易做,我以为做一个横向的弹簧也很容易,但我现在运气不好。上面的脚本就是说向上的spring脚本。我也知道我必须做一些有方向的事情,因为玩家会朝弹簧击中它,然后被击退。
我尝试调整我的向上弹簧脚本,以便您按照脚本中指定的方向前进(例如,
Vector2.right
向右走),但我猜它根本不会也不能那样工作。当我试图解决我的问题时,我在网上看到的所有帖子似乎都是关于其他统一的东西,巧合地称为弹簧,或者如何作为玩家推动一个物体
编辑:
Vector2.right
的实际结果不会改变方向,它只是弹起玩家。另外,我将 JumpHeight 变量重命名为 rightForce,但我确信这与它不起作用无关。 Unity没有显示错误
让我们改进它! 我们将使用 tranform.up 作为方向(这是选择游戏对象时可以看到的绿色箭头)
确保你的弹簧精灵指向这个绿色箭头。 然后只需更改脚本以使用 tranform.up
public class spring : MonoBehaviour
{
[SerializeField] public float jumpForce = 10f;
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
collision.gameObject.GetComponent<Rigidbody2D>().AddForce(transform.up * jumpForce , ForceMode2D.Impulse);
}
}
}
注意:这个“spring”脚本应该位于 spring 的根目录中,而不是子目录中。
现在,如果您旋转弹簧,它应该正确地将您的玩家发送到与绿色箭头相同的方向:) 不要忘记你的角色和地面之间存在物理摩擦,因此你可能需要增加水平弹簧的力量来抵消这种摩擦。