基本上,我有一个子弹,当您单击鼠标左键时,它会从您的播放器上的枪上射击。我不能专门摧毁击中东西的子弹,它会摧毁所有子弹。 :C 我认为对此有一个好的解决方法,那就是当某些东西进入触发条件时使其自我毁灭? 我不知道该怎么做,所以如果有人可以帮忙的话! 如果您想查看我的代码,则可以提出要求。
这是子弹击中的东西:
void OnTriggerEnter()
{
enemyHealth -= 2f;
ishit = true;
}
void OnTriggerExit()
{
ishit = false;
}
将静态变量设置为true和false。 这是子弹头
void Update()
{
transform.Translate(Vector2.right * mspeed * Time.deltaTime);
bool hit = Enemy.ishit;
if (hit == true)
{
Object.Destroy(gameObject);
}
}
它使用静态布尔自毁
谢谢!
答案 0 :(得分:1)
您最好的选择是在子弹实例上致电Object.Destroy
。
那不会破坏任何其他子弹。
如果要销毁与当前脚本关联的对象,还可以在for numbers in product(range(10), repeat=3):
if sum(numbers) == 10:
print(*numbers)
上调用Object.Destroy
。
您可以致电OnCollisionEnter
。
编辑:您的问题不是this.gameObject
摧毁了所有子弹,而是当一颗子弹被击中时,每一颗子弹都会自毁。
您可能要尝试:
Object.Destroy
答案 1 :(得分:0)
您可以在“可损坏”对象上有一个脚本来跟踪碰撞并摧毁与之碰撞的子弹,或者在子弹预制件上使用脚本在发生碰撞时自行销毁它。
在游戏上使用替代方法是根本不实例化子弹,如果您射击的子弹的移动速度与子弹真正移动的速度一样快,则玩家无论如何都不会看到它们,您可以使用raycast来查看您是否当玩家射击时击中某物,发出声音,枪口闪烁,将空的弹药掉在地上,并且万一玩家击中任何东西,请实例化一些粒子或子弹在另一端可能产生的任何影响并加以解决...