【发布时间】:2017-06-02 10:37:45
【问题描述】:
我想要一颗从敌人身上发射的子弹,从我的玩家护盾上弹回来。
我已经设置了我的角色,敌人会每隔一段时间向我开火。 然后我可以激活我的玩家护盾(打开 BoxCollider)并按下按钮。
所以当子弹 (IsTrigger) 与我的玩家护盾 (IsNotTrigger) 发生碰撞时,我想移除这个子弹,然后从护盾中实例化一个新子弹,朝着敌人的方向。 我在销毁 Bullet 时也遇到了问题。
当 OnTriggerEvent 或 OnColliderEvent 发生(都尝试过)时,我的 Shield 会出现数百颗子弹。如何只允许向敌人发射一颗子弹?
下面是我的脚本的一部分,它位于我的 Players Shield 的 GameObject 中。 理想情况下,我想在子弹与物体碰撞后将其销毁。
void OnTriggerEnter(Collider col) {
if (col.tag == "Weapon") {
attack();
}
}
private void attack() {
if (!GameManager.instance.GameOver) {
bulletReturnClone = Instantiate(bulletReturn, transform.position, transform.rotation) as GameObject;
bulletReturnClone.GetComponent<Rigidbody>().velocity = transform.forward * 25f;
【问题讨论】:
-
你的 bulletReturn 预制件有“武器”标签吗?
-
是的,它有一个“武器”标签
-
你的新子弹可能会触发新子弹的安装,所以会出现很多子弹。
-
是的,这是有道理的。也许我的子弹在我的盒子对撞机中被实例化了。所以我的 fireLoctation 需要在这个盒子碰撞器之外。
-
让我们知道它是否能解决您的问题。
标签: c# unity3d instantiation