首页 > 解决方案 > 如果对象达到变换值,则停止它

问题描述

所以我有一个 2d 游戏对象,它的行为就像一个尖刺陷阱,当角色在触发器上碰撞时会从地面弹出。我在游戏对象的 2D 刚体上使用 AddForce 来控制它从地面出来时的速度,我希望它只是伸出地面。当它达到某个转换 Y 值时,我该如何停止它。

在此处输入图像描述

这是我的代码:

public float speed;

Rigidbody2D rb;

void Start () {

    rb = GetComponent<Rigidbody2D>();
}

void Update () {

}

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.gameObject.tag == "Player")
    {
       rb.AddForce(new Vector2(0, speed * Time.time), ForceMode2D.Impulse);       
    }
}

标签: unity3d

解决方案


一定的变换值,还是一定的 transform.position 值?

我会这样做:

private float threshold = 10f;
private float startPosition = 0;
private RigidBody2D pikeRigidbody;:

private void Start()
{
  startPosition =  = this.transform.position;
  pikeRigidbody = this.GetComponent<RigidBody2D>();
}

private void Update(){
  if(this.transform.position.y >= (startPosition.y + threshold))
  {
    pikeRigidbody.velocity = Vector3.zero;
  }
}

并将脚本附加到 pike 对象。

编辑为 position.y 而不是 position


推荐阅读