unity3d - 应用高速跟随一个目标时忽略 Unity 2D 碰撞
问题描述
我的游戏基本上是关于跟随鼠标位置并且每个都有组件的多个玩家对象,CircleCollider
但是当玩家彼此如此接近时,他们不会发生碰撞并开始重合。
有没有办法GameObject
在每个玩家面前进行检测,使其速度为零,如果玩家视线空旷,它可以直线前进?
我认为这可以通过在玩家的向上向量中获取第一个接触并比较
GameObject
然后的标签来实现,如果它是Player
自我速度设置为零。
解决方案
假设您的对象使用该RigidBody2D
组件,您可以尝试将碰撞检测模式从“离散”更改为“连续”。
要阻止对象相互推动,请将此代码放在移动对象的代码之前:
Vector2 difference = target - (Vector2)transform.position;
RaycastHit2D[] hit = new RaycastHit2D[1];
if (Physics2D.CircleCast(transform.position, radius, difference.normalized, new ContactFilter2D(), hit, difference.magnitude) > 0) {
// Something is in the way
float firstObstacleDistance = hit[0].distance;
target = difference.normalized * firstObstacleDistance;
}
变量target
应该是鼠标位置,radius
是CircleCollider
组件的半径。