二维多边形对撞机不会与二维多边形对撞机发生碰撞
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。
因此,您确实遇到了碰撞,因此物体无法越过墙,但这不是新的碰撞!
解决方案:对地板使用对撞机,对墙使用不同的对撞机,边缘对撞机对此很有用。
我正在开发一款游戏,而且刚刚开始。我在地图中添加了 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。
因此,您确实遇到了碰撞,因此物体无法越过墙,但这不是新的碰撞!
解决方案:对地板使用对撞机,对墙使用不同的对撞机,边缘对撞机对此很有用。