二维多边形对撞机不会与二维多边形对撞机发生碰撞

2D Polygon Collider not causing collisions with a 2d polygon collider

我正在开发一款游戏,而且刚刚开始。我在地图中添加了 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,但现在敌人不会与墙的侧面发生碰撞并转身,它只是保持面向同一方向但不会移动。有人知道为什么吗?

您对地板和墙壁使用相同的碰撞器...因此当您与墙壁碰撞并且已经接触到地板时,不会发生 OnCollisionEnter。

因此,您确实遇到了碰撞,因此物体无法越过墙,但这不是新的碰撞!

解决方案:对地板使用对撞机,对墙使用不同的对撞机,边缘对撞机对此很有用。