转向并且移动 到鼠标右键点击位置
public float speed = 20;
private bool mouseDown;
private Vector3 targetPosition;
Quaternion ratation;
void Update() {
if (Input.GetMouseButtonDown(1)) {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out var hit)) {
print(hit);
targetPosition = hit.point;
mouseDown = true;
Vector3 playerToMouse = targetPosition - transform.position;
playerToMouse.y = 0f;
ratation = Quaternion.LookRotation(playerToMouse);
}
}
if (mouseDown) {
// 转向角度满足
if (Quaternion.Angle(transform.rotation, ratation) > 1f) {
transform.rotation = Quaternion.Lerp(transform.rotation, ratation, 0.1f);
}
// 距离满足
if (Vector3.Distance(transform.position, targetPosition) > 0.5f) {
transform.position = Vector3.MoveTowards(transform.position, targetPosition, Time.deltaTime * speed);
}
}
}