Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 在统一中如何;扔;有玩家的精灵,如果两者都有刚体和碰撞器?_Unity3d_Collision_Unity3d 2dtools - Fatal编程技术网

Unity3d 在统一中如何;扔;有玩家的精灵,如果两者都有刚体和碰撞器?

Unity3d 在统一中如何;扔;有玩家的精灵,如果两者都有刚体和碰撞器?,unity3d,collision,unity3d-2dtools,Unity3d,Collision,Unity3d 2dtools,我有一个球员,我想扔一个项目是什么“附加”到球员。 问题是两者都有rigidbody2D和Collider组件。我想扔的东西是和玩家在一起的,它必须与地面和其他东西碰撞。(球员除外) 以下是我尝试过的: if (Input.GetButtonDown ("Fire1") && canThrowCandle) { Candle.rigidbody2D.isKinematic = false; if (faceingRight)

我有一个球员,我想扔一个项目是什么“附加”到球员。 问题是两者都有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)控制我要抛出的ithem的位置:

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

所以问题是,我怎样才能让它工作呢?

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

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


如果您希望触发器碰撞器和物理碰撞器都连接到同一个gameObject,我认为您需要使用子gameObject,如前所述

谢谢。但是当我把蜡烛扔到地上后,玩家可以用它来再次收集蜡烛。如何制作?您可以添加两个空的游戏对象作为蜡烛游戏对象的子对象。第一个是碰撞器,它与地面碰撞,而不是与玩家碰撞。第二个有触发碰撞器,它与播放器碰撞并设置
canThrowCandle