1

我有一个播放器,我想扔一个“附加”到播放器的物品。问题是两者都有rigidbody2D 和Collider 组件。我想扔的物品是玩家,它必须与地面和其他东西发生碰撞。(播放器除外)

这是我尝试过的:

if (Input.GetButtonDown ("Fire1") && canThrowCandle) {
            Candle.rigidbody2D.isKinematic = false;

            if (faceingRight)
                Candle.rigidbody2D.AddForce(new Vector2(400f, 400f));
            else if (!faceingRight)
                Candle.rigidbody2D.AddForce(new Vector2(-400f, 400f));

            Candle.collider2D.enabled = true;
            canThrowCandle = false;
        }

然后如果玩家与物品(蜡烛)发生碰撞,它会再次与玩家发生碰撞:

void OnCollisionEnter2D(Collision2D coll){
        if (coll.gameObject.name == "Candle") {
            canThrowCandle = true;
            Candle.rigidbody2D.isKinematic = true;
            Candle.collider2D.enabled = false;
        }

还有代码(CandleController)控制我想抛出的item的位置:

void Update () {
        if (GameObject.Find ("Player").GetComponent<PlayerController> ().canThrowCandle)
            transform.position = new Vector3 (player.transform.position.x, player.transform.position.y, -0.01f);
    }

所以问题是,我怎样才能做到这一点?

4

1 回答 1

2

如果我理解正确,您希望蜡烛进入播放器内部,但它们都需要与地面碰撞。

这可以使用碰撞层来完成。只需将地面、播放器和蜡烛放到不同的层。然后调整玩家和蜡烛都与地面碰撞,但不相互碰撞。

如果您希望触发对撞机和物理对撞机都附加到同一个游戏对象,我认为您需要使用子游戏对象,如此处所述。

于 2015-01-21T06:39:29.230 回答