2017-03-22 4 views
0

2Dプラットフォームゲームのプラットフォームを作成してC#で援助を提供できる人は誰でも、私はプラットフォームを飛び越えてプラットフォームを崩壊し、安定した土地?私は周りを見回しており、原因に役立つものを見つけることができないようです。2D安定したままでプラットフォームを両方向に通す

+0

は、あなたがこれまでに行っていると、あなたが立ち往生しているところかを示すだろうか? – CNuts

答えて

0

ゲームが非常にシンプルな場合(プラットフォームがフラットな場合など)、プレーヤがプラットフォームの下にあるときにColliderを非常に簡単に無効にすることができます。

プラットホームに立つために他のオブジェクトが必要な場合は、IgnoreCollisionIgnoreLayerCollisionという2つの方法でコリジョンマトリックスを制御できます。

すべてのプラットフォームにこのコンポーネントを取り付けます

[RequireComponent(typeof(Collider))] 
public class ColliderActivator : MonoBehaviour 
{ 
    public GameObject player; 

    new Collider collider; 
    Collider playerCollider; 
    void Awake() 
    { 
     collider = GetComponent<Collider>(); 
     playerCollider = player.GetComponent<Collider>(); 
    } 

    bool wasPlayerAbove = false; 
    void Update() 
    { 
     bool isPlayerAbove = player.transform.position.y - transform.position.y >= 0; 
     // This check is only to reduce calls to the physics system 
     if(wasPlayerAbove != isPlayerAbove){ 
      wasPlayerAbove = isPlayerAbove; 
      Physics.IgnoreCollision(collider, playerCollider, !isPlayerAbove); 
     } 
    } 
} 
+0

私は安定性がその間ずっとそこにとどまることを望んでいます。私がコライダーを無効にした場合、プラットホームの上にあるものはすべて落とすようにしてはいけませんか? – Letholor

+0

私は自分の答えを編集しました:IgnoreCollisionは、特定の2つのコライダー間の衝突を無効にします。 – dogiordano

関連する問題