C# 二维多边形碰撞器不会导致与二维多边形碰撞器发生碰撞 我正在做一个游戏,我刚刚开始。我在地图中添加了一个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 } 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类Sexapus:单一行为{ 公共静态积分速度=42; 公共刚体2d rb; 公共向量2 dir; 公共动画; 无效开始(){ rb=GetComponent(); dir=新向量2(1,0); anim=GetComponent(); } //每帧调用一次更新 无效更新(){ rb.速度=方向*速度; anim.SetFloat(“方向”,dir.x); } 空心OnCollisionInter2D(碰撞2D列){ dir=dir*-1; } //检查任务 }

C# 二维多边形碰撞器不会导致与二维多边形碰撞器发生碰撞 我正在做一个游戏,我刚刚开始。我在地图中添加了一个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 } 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类Sexapus:单一行为{ 公共静态积分速度=42; 公共刚体2d rb; 公共向量2 dir; 公共动画; 无效开始(){ rb=GetComponent(); dir=新向量2(1,0); anim=GetComponent(); } //每帧调用一次更新 无效更新(){ rb.速度=方向*速度; anim.SetFloat(“方向”,dir.x); } 空心OnCollisionInter2D(碰撞2D列){ dir=dir*-1; } //检查任务 },c#,unity2d,C#,Unity2d,这意味着敌人会击中一面墙,然后旋转并开始向另一个方向移动。我意识到,根据我地图的大小,使用多个2dboxCollider(当我说“多个”时,我的意思是我可能需要使用100多个)是一种非常糟糕的方法。我现在也开始在地图上使用2D多边形对撞机,但现在敌人没有撞到墙的侧面并掉头,它只是面向同一方向,但不移动。有人知道为什么吗?您在地板和墙壁上使用相同的碰撞器。。。因此,当您与墙壁碰撞并且已经接触到地板时,迎面碰撞不会发生 因此,您确实得到了碰撞,因此对象不能移动超过墙,但这不是新的碰撞 解决方案:在地

这意味着敌人会击中一面墙,然后旋转并开始向另一个方向移动。我意识到,根据我地图的大小,使用多个2dboxCollider(当我说“多个”时,我的意思是我可能需要使用100多个)是一种非常糟糕的方法。我现在也开始在地图上使用2D多边形对撞机,但现在敌人没有撞到墙的侧面并掉头,它只是面向同一方向,但不移动。有人知道为什么吗?

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

因此,您确实得到了碰撞,因此对象不能移动超过墙,但这不是新的碰撞

解决方案:在地板上使用碰撞器,在墙壁上使用不同的碰撞器,边缘碰撞器适用于此