[英]Unity3D Collision on Demand
我正在制作一个标题,玩家可以在其当前位置投下炸弹。 问题是我希望,玩家不能穿过任何放置的炸弹(除非他拿走了特定的物品)。
但是一个非触发式对撞机会导致放置炸弹将玩家推开(可能是撞到了墙,他最后被卡住了),但这似乎并非如此。
那么,是否有任何简单的方法可以使炸弹与炸弹发生碰撞,从而停止基于脚本的玩家移动,或者我是否必须检查玩家采取的每个步骤(如果他会与炸弹相撞并停止移动)?
更新(回答程序员的评论)
如果炸弹对撞机不是要触发的,这会导致自动碰撞行为,则将炸弹按其当前位置放下的玩家会朝任意方向推开,这不是期望的行为,因为玩家也可以被推到墙上,他无法走出去。
更新(在Jeroen De Clercq的答复之后)
炸弹对撞机最初设置为触发,并且所附脚本如下所示:
public class Bomb : MonoBehaviour
{
private SphereCollider collider;
// Use this for initialization
void Start()
{
collider = GetComponent<SphereCollider>();
}
// Update is called once per frame
void Update()
{
Collider[] collidings = Physics.OverlapSphere(gameObject.transform.position, 1);
if (!collidings.Any(s => s.tag.Equals("Player")))
collider.isTrigger = false;
}
}
如果玩家收集了一个可以让他穿过炸弹的物品,他自己的图层将更改为指定的玩家图层,该图层不会与炸弹发生碰撞!
尽快产生炸弹; 生成带有脚本和不活动对撞机的不可见游戏对象。 使脚本检查是否有人在对撞机中,只要他外出就激活对撞机。 确保他们一起死亡是炸弹的孩子。 至于您的特殊项目,只需将方法添加到已被用来停用对撞机的脚本中,该方法也将对玩家进行检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.