需求分析
我们按下鼠标左键/右键/中间,物体朝向点击位置,并移动到点击位置。
实现思路:当按下鼠标后,我们需要利用射线获取到点击的坐标,然后利用Transform的LookAt方法使物体朝向点击的目标点,最后在一定时间内使物体移动到目标点即可。这里推荐一个补间动画插件-----DoTween,用它为旋转、移动添加插值,让动作不会太过于僵硬。
插件下载接:DoTween插件
提取码:1aiz
实现
插件下载解压后,将它拖入到Assets文件下,全部导入即可,然后创建脚本
using DG.Tweening;//DoTween插件引用
using UnityEngine;
public class MoveToTargetPos : MonoBehaviour
{
private static float movespeed = 2.0f;//米/秒,速度自定义即可
private Camera camera;
private Ray ray;
private RaycastHit hit;
private void Awake()
{
camera = GetComponentInChildren<Camera>();//获取子物体的摄像机组件
}
void Update()
{
if (Input.GetMouseButtonDown(1))//按下鼠标右键
{
ray = camera.ScreenPointToRay(Input.mousePosition);//实例化射线为摄像相机朝场景中鼠标点击位置发射射线
if(Physics.Raycast(ray,out hit))//如果射线与场景中物体发生了碰撞
{
float distance = Vector2.Distance(transform.position, hit.point);//获取自身物体与鼠标点击位置的平面距离
transform.DOMove(hit.point, distance / movespeed).SetEase(Ease.Linear);//使用DoTween的DOMove方法,参数1:目标位置,参数2:时间
transform.DOLookAt(hit.point,1);//物体逐渐朝向某个位置,参数1:目标位置,参数2:时间
}
}
}
}
最后将脚本挂载在物体上即可:
效果展示: