我正在学习一些教程,遇到了Raycast,其中一个使用Instantiate发射枪,另一个使用Raycast。我已经编程一段时间了,我仍然不确定我应该使用Raycast还是后者。有人能给我解释一下它是怎么工作的吗。
差别很大。事实上,它们的区别再大不过了,但如果你第一次了解它们是从开枪的过程中,我可以看出其中的困惑。
光线投射:想象一个激光。你选择激光的起点和方向,然后它返回激光照射的地方。
实例化:你根本无法将其与光线投射进行比较。Unity使用名为GameObjects的东西。玩家是一个游戏对象,相机是游戏对象,地形是游戏对象。Instantiate()
只是创建一个新的GameObject。
使用Raycast()
来开火是非常直接的;起点是枪的位置,给它一个方向,然后你就可以得到枪击中的地方。使用Instantiate()
发射枪支意味着创建一个名为"子弹"的游戏对象,该对象带有刚体和对撞机。它的性能会更高,但你可以添加一些东西,比如子弹掉落、风、跳弹。尽管如此,您可能仍然需要使用Raycast()
来确保它在物理更新之间不会发生任何变化,因为它可能移动得很快。
下次,你应该使用统一手册来回答这样的问题。
谷歌上出现的第一件事是"Unity Instantate"one_answers"Unity Raycast"。