🏆 个人愚见,没事写写笔记
🏆《博客内容》:Unity3D开发内容
🏆🎉欢迎 👍点赞✍评论⭐收藏
🔎目标:物体匀速移动、加速移动、减速移动、自定义变速移动等移动方式。
☀️实现目标:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MoveByMouse : MonoBehaviour { public Transform target; public float durationTime = 1f; public AnimationCurve curve; private bool isMoving = false; private Vector3 endPoint; private Vector3 startPoint; private float timer = 0; private void Update() { if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo)) { startPoint = target.transform.position; endPoint = hitInfo.point; endPoint.y = startPoint.y; isMoving = true; timer = 0; } } if (isMoving) { timer += Time.deltaTime; float temp = timer / durationTime; target.LookAt(endPoint); target.position = Vector3.Lerp(startPoint, endPoint, curve.Evaluate(temp)); if (Vector3.Distance(target.position, endPoint) <= 0.1f) { isMoving = false; } } } }
Target:所需要移动的物体
DurationTime:移动到目的地所需的时间
Curve:运动速度的曲线(可选,可自定义)