2017-06-15 14 views
0

私はゲームの作業中です。私はpngとしてマップに追加し、私が通過したくない領域(それは2Dプラットフォーマー)の周りにコライダーを追加しています。私はすでに敵を設計し、それが動き回るとしてそれに2DRigidBodyコンポーネントを追加し、レベルのためのコライダーとして2DBoxCollidersを使用し始め、そして私が書いた私のスクリプトいる:2Dポリゴンコライダーが2次元ポリゴンコライダーと衝突しない

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class Sexapus : MonoBehaviour { 

public static int Velocity = 42; 
public Rigidbody2D rb; 
public Vector2 dir; 
public Animator anim; 

void Start() { 
    rb = GetComponent<Rigidbody2D>(); 
    dir = new Vector2(1, 0); 
    anim = GetComponent<Animator>(); 
} 

// Update is called once per frame 
void Update() { 
    rb.velocity = dir * Velocity; 
    anim.SetFloat ("Direction", dir.x); 
} 

void OnCollisionEnter2D (Collision2D col) { 
    dir = dir * -1; 
} 

//CHECK TASKS 
} 

は敵がだろうことを意味し壁の側に当たってから、回転して、もう一方の方向に進みます。私は、複数の2DBoxCollidersを使用しているマップのサイズで実現しました(そして、複数の場合、おそらく100を超えるものを使用しなければならないということを意味します)。私は今、マップの2Dポリゴンのコロダーを使い始めましたが、敵は壁の側面に衝突せず、向きを変えずに移動します。誰でも知っている理由は?

答えて

0

床と壁に同じコライダーを使用しています...壁に衝突して既に床に触れているとき、OnCollisionEnterは起こりません。

だから、あなたは衝突を取得するので、オブジェクトは壁を越えて移動することはできませんが、新しい衝突ではありません!

解決策:床にはコライダーを使用し、壁にはコリドーを使用してください。エッジコライダーはこれに適しています。

関連する問題