我正在制作一个标题,玩家可以在当前位置投下炸弹。问题是,我想,玩家不能穿过任何放置的炸弹(除了他拿出一个特定的物品)。
但是一个非触发式对撞机导致放置炸弹将玩家推开(可能进入墙壁,他最终卡住了),这似乎不是那样。
那么是否有任何简单的方法来启动与炸弹的碰撞,这会阻止玩家基于脚本移动,或者我是否必须检查玩家采取的每一步,如果他会与炸弹碰撞并停止移动? / p>
更新(程序员评论回答)
如果炸弹对撞机不是一个触发器,它会导致自动碰撞行为,那么将炸弹作为当前位置掉落的玩家会向任何方向推开,这不是所希望的行为,因为玩家也可以推到墙上,在那里他无法离开。
更新(在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;
}
}
如果玩家收集了允许他穿过炸弹的物品,他自己的图层将被更改为指定的玩家图层,不会与炸弹碰撞!
答案 0 :(得分:1)
当你生弹炸弹时;产生一个看不见的游戏对象,上面有一个脚本和非活动对撞机。在脚本激活对撞机时,让脚本检查是否有人在对撞机中。确保它是炸弹的孩子,就像他们死在一起一样。至于你的特殊项目,只需将方法添加到被调用以停用对撞机的同一个脚本,并覆盖对玩家的检查。