2017-03-20 35 views
0

私は血まみれの初心者です。私は現在、2D Brawlerで作業しています。動きは完全には動作しますが、私のコライダーは何をすべきかはしません...私は2つのGameObjects Collide(SpearとPlayer2)が衝突しているか、Spears AttackDamageによってPlayer2のhealthPointsが減少するかどうかを検出したいと思います。コリジョンコールバック関数が呼び出されていません

ゲームオブジェクトの名前もタグです。 SpriteRedered(Material Sprites-Default)、BoxCollider2D(Material None物理材料2D、IsTrigger(非アクティブ)、UsedByEffector(非アクティブ)Rigidbody2D(キネマティック、非マテリアル、シミュレート(活動化)、KinematicContacts残りのため)、標準のconfigs))

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
public class SpearCtr : MonoBehaviour { 

    public Vector2 speed; 
    public float delay; 
    Rigidbody2D rb; 

    void Start() 
    { 
     rb = GetComponent<Rigidbody2D>(); 
     rb.velocity = speed; 
     Destroy(gameObject, delay); 
    } 
    void Update() 
    { 
     rb.velocity = speed; 
    } 
} 

プレーヤーの設定 スピアーズ設定 これは、私は誰かがこの作業を取得する方法を教えてくださいことを願って、私は

OnCollision2D(Collision2D target); 
{ 
    if (target.gameObject.tag == "Spear") 
    { 
     hp = -1; 
     if (hp <= 0) 
     { 
      alive = false; 
     } 
    } 
} 

前に試してみましたコードでした ありがとうすべての答え (私の悪い英語のためところで申し訳ありませんが、私はオーストリア午前)OnCollisionEnter()が動作しない理由を enter image description here

enter image description here

+0

。 – CNuts

+0

衝突を検出しません。 –

+0

IsKinematicをtrueに設定すると、衝突を検出しません。 – CNuts

答えて

2

理由:

コリソン

RigidbodyまたはRigidbody2Dは添付されていません。それは3Dのゲームオブジェクトがある場合で、少なくとも

、ゲームオブジェクトのは、それにRigidbodyを連結しておく必要があります。 Rigidbody2Dは、2D GameObject/2D Colliderの場合は添付する必要があります。

スペルが間違っています

あなたは正しく綴ることができませんでした。そのスペルは大文字と小文字を区別します。

正しいスペル:3D MeshRenderer /衝突について

:2D SpriteRenderer/Collider2Dについて

OnCollisionEnter

OnCollisionStay

OnCollisionExit

OnCollisionEnter2D

OnCollisionStay2D

OnCollisionExit2D

.ColliderがIsTriggerをチェックしました。 OnCollisionXXX関数を呼び出す場合は、のチェックを外します。

enter image description here

選択図スクリプトが衝突ゲームオブジェクトのいずれかに結合ないあります。ゲームオブジェクトにスクリプトを添付します。

。あなたは間違ったパラメータをコールバック関数に提供しました。 3D MeshRenderer /衝突については

パラメータがCollisionないColliderです。

それは次のとおりです。2D SpriteRenderer/Collider2Dについては

void OnCollisionEnter(Collision collision) {} 

ない

void OnCollisionEnter(Collider collision) {} 

6.Both剛体衝突有効isKinematicを持っています。この場合、コールバック関数は呼び出されません。

これは完全なコリソンテーブルです:だからあなたがしようとしたものから、それはただの衝突を検出したことがないか、あなたはそれはあなたがやりたいことはありません衝突を検出するとき、それはあるん

enter image description here

関連する問題