有个需要要物体按照抛物线落地
根据物理中的物体抛物运动公式进行处理
1,根据起点到目标点的距离和策划配置的速度计算飞行时间
2,把抛射角度,重力加速度暴露出来给策划进行调整
3,计算中先把初速度进行分解,得到水平和竖直方向的速度
4,根据过去的过去的时间计算位置的偏移
5,通过起始位置加上偏移位置来设置物体位置
var config float EmergenceAngle; // 出射角
var config float WheelGravity; // 重力加速度
var Vector VStartLoc; // 起始位置
var Vector VEndLoc; // 目标位置
var float VStartTime; // 开始时间
// 使用抛物线计算轨迹
simulated function vector CaculatePosition()
{
local float tXOffset, tYOffset;
local float tVx, tVy;
local float tDeltaTime;
local Vector tResultVec;
local vector tAimVec;
tDeltaTime = (WorldInfo.TimeSeconds - VStartTime);
tVx = SpeedBase * Cos(DegToRad * EmergenceAngle);
tVy = SpeedBase * Sin(DegToRad * EmergenceAngle);
tXOffset = tVx * tDeltaTime;
tYOffset = tVy * tDeltaTime + 0.5 * (-WheelGravity) * tDeltaTime * tDeltaTime;
tAimVec = Normal(VEndLoc - VStartLoc);
tAimVec.Z = 0;
tResultVec = VStartLoc + tAimVec * tXOffset;
tResultVec.Z = VStartLoc.Z + tYOffset;
return tResultVec;
}