当单击多个点时,如何动画行渲染器动画渲染器
我在屏幕上有多个点,当玩家以正确的顺序点击它们时,它应该在它们之间进行动画。如果播放器单击点的速度比动画的命中率更快,则只有在上一个完成时,下一行才会动画。我遵循了这些教程,但无法设法将它们融合在一起:
https:/https:/ /www.youtube.com/watch?v=a3cs6ybxwdy&t=267s
我正在使用的代码:
[SerializeField] 私有浮点动画duration = 3f;
private LineRenderer lineRenderer;
private Vector3[] linePoints;
private int pointsCount;
public Transform lastPoints;
public List<Transform> points = new List<Transform>();
private void Awake()
{
lineRenderer = GetComponent<LineRenderer>();
}
public void MakeLine(Transform finalPoint)
{
if (lastPoints == null)
{
lastPoints = finalPoint;
points.Add(lastPoints);
}
else
{
points.Add(finalPoint);
lineRenderer.enabled = true;
SetupLine();
}
}
private void SetupLine()
{
int pointLength = points.Count;
lineRenderer.positionCount = pointLength;
for (int i = 0; i < pointLength; i++)
{
lineRenderer.SetPosition(i, points[i].position);
}
}
这是一次动画的所有点:
public IEnumerator AnimateLine()
{
for (int i = 0; i < pointsCount - 1; i++)
{
float startTime = Time.time;
Vector3 startPos = linePoints[i];
Vector3 endPos = linePoints[i+1];
Vector3 pos = startPos;
while (pos != endPos)
{
float t = (Time.time - startTime) / animationDuration;
pos = Vector3.Lerp(startPos, endPos, t);
for (int j = i+1; j < pointsCount; j++)
{
lineRenderer.SetPosition(j, pos);
}
yield return null;
}
}
}
单击单鼠标:
private void CheckClickDownEvent()
{
if (Input.GetMouseButtonDown(0))
{
var selectedObject = RaycastObject();
if(selectedObject != null)
{
OnObjectSelect?.Invoke(selectedObject);
}
}
}
private void HandlePointSelect(GameObject selectedPoint)
{
if (spawner.points.IndexOf(selectedPoint) == 0)
{
selectedPoint.GetComponent<PointScript>().SelectPoint();
spawner.points.Remove(selectedPoint);
lineAnimator.MakeLine(selectedPoint.transform);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论