c# - Raycast 和 Instantiate 的区别
问题描述
我正在阅读一些教程并遇到了 Raycast,其中一个使用 Instantiate 来开枪,另一个使用 Raycast。我已经编程了一段时间,但我仍然不确定我应该使用 Raycast 还是后者。谁能解释一下它是如何工作的。
解决方案
相当大的不同。实际上,它们的区别不能再大了,但是如果您第一次了解它们是从使用开枪中了解它们,我会看到混乱。
Raycast:想象一下激光。您选择此激光的起点和方向,然后返回激光击中的位置。
实例化:您根本无法将其与光线投射进行比较。Unity 使用称为 GameObjects 的东西。玩家是GameObject,相机是GameObject,地形是GameObject。Instantiate()
只需创建一个新的游戏对象。
用来开枪Raycast()
很简单。起点是枪的位置,给它方向,然后你就得到枪击中的位置。Instantiate()
用来开枪意味着创建一个名为“bullet”的游戏对象,其中包含一个 RigidBody 和一个 Collider 。它会更加注重性能,但您可以添加诸如子弹下落、风、弹跳之类的东西。虽然,您可能仍然需要使用Raycast()
以确保它在物理更新之间不会经历任何事情,因为它可能移动得非常快。
下一次,你应该使用Unity 手册来解决这样的问题。
在 Google 中出现的第一件事是“Unity Instantiate”和“Unity Raycast”。
推荐阅读
- correlation - 与数千个变量的相关性 - FDR
- javascript - 仅当从另一个选择元素列表中选择特定元素时才显示选择字段
- php - Codeigniter mysqli 问题
- git - 让 git 和 svn 在同一个文件夹上一起工作
- python - python - interpolation in pandas
- python - 将 Asyncio API 调用限制为 n 个同时会话 - 信号量不加载超过 1 个线程
- android - 直接从移动相机使用 FFmpeg 压缩视频
- node.js - Nodemon with flag --legacy-watch not working with docker Ubuntu/Linux
- json - 如何在我的 json angularjs 开头删除空格
- angular - 为什么我的一些 Angular Material 组件中的文本看起来是白色的?