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