基本的には、衝突のない接触が確立できる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
私はonTriggerEnter2D
にOnCollisionEnter2D
から変更さ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"); } } }
連絡先にそれを変更することができます。 力に反応させたくない場合は、rigidbody2Dを追加して、「IsKinematic」をチェックしてください。 colliersを使用せずにスプライトを変更したい場合は、あまり意味がありません。 –
あなたのコライダー 'IsTrigger'を作って、' OnTriggerEnter2D'を使ってください。 – LibertyLocked
@LibertyLocked質問を更新しました – Jickery