【发布时间】:2022-06-29 04:24:52
【问题描述】:
我有几行代码应该让球(Spark)从一个位置移动到另一个位置,然后当它到达最后一个可用位置时,它会传送回起点。但是它似乎不起作用,它只是停在给定的最后一个位置。 这是代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
int pointCount;
public Transform point1, point2;
public float velocity;
float increment;
float time, incrementation;
[SerializeField] private Transform A,B,C,D,E,F,G,H,I,J;
[SerializeField] private List<Transform> movePoints;
[SerializeField] private Transform Spark;
// Start is called before the first frame update
void Start()
{
movePoints.Add(A);
movePoints.Add(B);
movePoints.Add(C);
movePoints.Add(D);
movePoints.Add(E);
movePoints.Add(F);
movePoints.Add(G);
movePoints.Add(H);
movePoints.Add(I);
movePoints.Add(J);
StartCoroutine("Movespark");
}
// Update is called once per frame
void Update()
{
Spark.position = Vector3.Lerp(point1.position, point2.position, incrementation);
incrementation += increment * Time.deltaTime;
}
IEnumerator Movespark(){
pointCount++;
var x = movePoints.Count;
incrementation = 0;
point1 = movePoints[pointCount];
if(pointCount < x){
point1 = movePoints[pointCount];
point2 = movePoints[pointCount+ 1];
}
if(pointCount >= x){
pointCount = 0;
StartCoroutine("Movespark");
yield return null;
}
float distance = Vector3.Distance(point1.position, point2.position);
increment = 1/(distance/velocity);
yield return new WaitUntil(() => point2.position.x <= Spark.position.x);
if(pointCount >= x)
pointCount = 0;
StartCoroutine("Movespark");
}
}
如果有人知道如何进行这项工作,将不胜感激。
【问题讨论】:
-
这个问题不是关于unityscript,而是关于c#