首页 > 解决方案 > 弹道:到达特定坐标

问题描述

我正在尝试在我的游戏中实现一个功能,该功能将自动锁定目标并投掷弹丸,以便它完美地落在它上面。我做了数学计算,从 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); 给我同样的问题。

我相信我错过了一些微不足道的东西,但我真的被困在了这一点上。有人能帮忙吗?

标签: c#unity3dscriptinggame-physicsprojectile

解决方案


推荐阅读