c# - 弹道:到达特定坐标
问题描述
我正在尝试在我的游戏中实现一个功能,该功能将自动锁定目标并投掷弹丸,以便它完美地落在它上面。我做了数学计算,从 Player 1 -> Target 的任何位置计算抛物线,但意识到我想使用 Unity 的物理系统,而不是让球跟随路径。
投掷速度是恒定的,Player 1 和 Target 是移动物体,但它们的位置将只记录一次以计算投掷的初始角度。
但是如何将它应用于我的 Player 和 Target 都具有 3D 坐标?
这是我尝试在 Unity 中编写的伪代码,以使其更易于阅读。
float velocity = 100f;
float g = Physics.gravity;
Transform x = Target.position.x - Player.position.x;
Transform y = Target.position.z - Player.position.z;
double theta;
theta = **big formula using the values above**
之后我不知道如何使用这个值来增加弹丸的力量。我想使用 AddForce(x,y,z, ForceMode.Impulse); 但我显然不能在这里使用初始角度,只能使用 x 和 y 值。使用 RigidBody.velocity = Vector3(vx, vy, vz); 给我同样的问题。
我相信我错过了一些微不足道的东西,但我真的被困在了这一点上。有人能帮忙吗?
解决方案
推荐阅读
- coldfusion - CFCHART 仅在 Y 轴上显示每隔一个标签
- python - 在 pyspark 中分解简单的 XML 文件(不使用数据块)
- angular - 如何在 Angular Nebular 中设置上下文菜单项的文本颜色样式
- python-3.x - 热门查找列表包含某些字符串值的行
- java - 对长 if 语句使用条件运算符
- node.js - ConnectionError:在将nodejs连接到mssql服务器时无法连接到*server*:1433
- python - 连接到 Google 分析时的 CERTIFICATE_VERIFY_FAILED
- python - cv2.VideoCapture 参数不作为输入
- string - 如何在飞镖颤动的文本中将我的字符串的第一个字母大写?
- ios - 有没有办法在 Cocoa Pods 的单个目标中使用静态和动态框架