2D多边形对撞机不会导致与2d多边形对撞机发生碰撞

时间:2017-06-15 20:23:21

标签: c# unity2d

我正在制作游戏,我刚刚开始。我在地图中添加了一个png,并且在我想要无法通行的区域附近添加了碰撞器(它是一个2D平台游戏)。我有一个已设计的敌人,并在它移动时添加了一个2DRigidBody组件,并开始使用2DBoxColliders作为关卡的碰撞器,以及我编写的脚本:

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(当我说多个我的意思是我可能不得不使用超过一百)是一个非常糟糕的方式。我现在也开始使用2DpolygonCollider作为地图,但现在敌人不会与墙壁碰撞并转身,它只是朝着相同的方向但不移动。谁知道为什么?

1 个答案:

答案 0 :(得分:0)

你在地板和墙壁上使用相同的对撞机......所以当你碰到墙壁并且已经触及地板时,OnCollisionEnter将不会发生。

所以,你确实得到了碰撞,因此物体不能越过墙壁,但这并不是一次新的碰撞!

解决方案:在地板上使用对撞机,在墙壁上使用不同的对撞机,边缘对撞机对此有好处。