我简单用协程来实现物体选择开始点,到终点的来回移动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectLerp : MonoBehaviour
{
public Transform startMarker;
public Transform endMarker;
public float speed = 1.0f;
void Start()
{
StartCoroutine(MoveObject());
StartCoroutine(AutoObjectRatotion());
}
IEnumerator MoveObject()
{
while (true)
{
yield return StartCoroutine(MoveToPosition(startMarker.position, endMarker.position));
yield return StartCoroutine(MoveToPosition(endMarker.position, startMarker.position));
}
}
//物体移动协程
IEnumerator MoveToPosition(Vector3 startPosition, Vector3 targetPosition)
{
float journeyLength = Vector3.Distance(startPosition, targetPosition);
float startTime = Time.time;
while (true)
{
float distCovered = (Time.time - startTime) * speed;
float fractionOfJourney = distCovered / journeyLength;
transform.position = Vector3.Lerp(startPosition, targetPosition, fractionOfJourney);
if (fractionOfJourney >= 1.0f)
break;
yield return null;
}
}
//自动旋转
IEnumerator AutoObjectRatotion()
{
while(true)
{
transform.Rotate(Vector3.up * 90 * Time.deltaTime);
yield return null;
}
}
}