在游戏开发中,轨迹绘制是一个非常重要的功能,尤其是在涉及到物体运动的游戏中,如投掷物、弹道轨迹等。
三种在Unity中实现轨迹绘制的方法:
基于物理公式的轨迹计算、
基于物体模拟的轨迹绘制和抛物线轨迹绘制,
方法一:基于物理公式的轨迹计算
实现代码
using UnityEngine;
public class TrajectoryDrawer : MonoBehaviour
{
public LineRenderer lineRenderer;
public Transform launchPoint;
public Ball orbitalBall;
public int numberOfDrawings;
public float initialSpeed = 10f;
public float timePoint = 0.01f;
void Update()
{
//StartDraw();
SimulateTrajectory(orbitalBall, launchPoint.position, launchPoint.forward * initialSpeed);
}
/*
public void StartDraw()
{
lineRenderer.positionCount = numberOfDrawings;
Vector3 startPos = launchPoint.position;
Vector3 startVelocity = initialSpeed * launchPoint.up;
float time = 0f;
for (int i = 0; i < numberOfDrawings; i++)
{
float x = (startVelocity.x * time) + (Physics.gravity.x / 2 * time * time);
float y = (startVelocity.y * time) + (Physics.gravity.y / 2 * time * time);
lineRenderer.SetPosition(i, startPos + new Vector3(x, y, 0f));
time += timePoint;
}
}
*/
public void SimulateTrajectory(Ball ballPrefab, Vector3 pos, Vector3 velocity)
{
var ghostObj = Instantiate(ball