如果对象达到转换值,则将其停止

时间:2018-11-21 06:11:42

标签: unity3d

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

enter image description here

这是我的代码:

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);       
    }
}

1 个答案:

答案 0 :(得分:0)

是某些变换值还是某些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;
  }
}

并将脚本附加到派克对象。

已编辑为position.y而不是position