2016-03-21 5 views
0

基本的には、衝突のない接触が確立できるSpriteKitのバックグラウンドです。私はUnity2dで同じ効果を得ようとしています。衝突する力に跳ね返ったり反応したりせずに、別のオブジェクトを通過するときに、あるオブジェクトのイメージとコライダーが円から四角形に変わるようにしたいのです。長方形のサークルの変更、私のコードでもお互いが衝突することなく接触するスプライトを変更する方法

void OnCollisionEnter2D(Collision2D col) { 
     if (col.collider.name == "Enemy") { 

     if(circleColliderOn){ 

      GetComponent<SpriteRenderer>().sprite = rectTargetSprite; 

      boxColliderOn = true; 
      boxCollider.enabled = true; 
      GetComponent<CircleCollider2D>().enabled = false; 
      circleColliderOn = false; 

      Debug.Log("reached here"); 

     } 
    } 
} 

が、箱コライダーが大きい長方形のサイズに増加しない、それは同じまま:以下の私のコードを参照してください。

UPDATE

私はonTriggerEnter2DOnCollisionEnter2Dから変更さTriggerOnプロパティを設定しますが、トリガが認識されません。以下の更新されたコードの最初のログは表示されません。私は、この問題に関するいくつかの研究を行なったし、すでに次を確認しています

  • 1ゲームオブジェクトは、rigidBody2D
  • isKinematicは、両方のオブジェクトの
  • コライダーが
  • に設定されて無効になっていたゲームオブジェクト名は確保しました正しい

    void OnTriggerEnter2d(Collision2D col) { 
    Debug.Log("reached here"); 
    
    if (col.collider.name == "Enemy") { 
        if(circleColliderOn){ 
    
         GetComponent<SpriteRenderer>().sprite = rectTargetSprite; 
    
         boxColliderOn = true; 
         boxCollider.enabled = true; 
         GetComponent<CircleCollider2D>().enabled = false; 
         circleColliderOn = false;    
         Debug.Log("LOGGED"); 
         } 
        } 
    } 
    
+0

連絡先にそれを変更することができます。 力に反応させたくない場合は、rigidbody2Dを追加して、「IsKinematic」をチェックしてください。 colliersを使用せずにスプライトを変更したい場合は、あまり意味がありません。 –

+0

あなたのコライダー 'IsTrigger'を作って、' OnTriggerEnter2D'を使ってください。 – LibertyLocked

+0

@LibertyLocked質問を更新しました – Jickery

答えて

0
void OnTriggerEnter2d(Collision2D col) 

変更この

void OnTriggerEnter2D(Collider2D col) 

にメソッド名は重要であり、同じであること、などのparamとして衝突していない衝突クラスを使用する必要があります。

あなたは今col.collider.nameを必要としないので、あなただけのコライダーが交差するときOnTriggerEnter2D`または `` OnCollisionEnter2D`を介して行われますUnity2Dでcol.namehttp://docs.unity3d.com/ScriptReference/Collider2D.html

関連する問題