ue3d在Unity中单击物体执行移动

在Unity中单击物体执行移动

分类:
ue3d - 在Unity中单击物体执行移动

在本文中,将探讨如何在Unity中点击鼠标时将角色移动到某个位置,这里仅通过代码在没有AI导航网格的情况下执行此过程。

首先,标记楼层Floor并将脚本附加到播放器,接着编写一段代码。

代码如下所示:

public class Player : MonoBehaviour
{
     private Vector3 _pos;
     private float distance;

     // Update is called once per frame
     void Update()
     {
         if (distance > 1)
         {
             vector3 direction = _pos - transform.position;
             direction.Normalize();
             transform.Translate(direction * 2 *Time.deltaTime);
         }
         if ( Mouse.current.leftButton.wasPressedThisFrame)
         {
              Ray rayorigin = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
              RaycastHit hitInfo;

              if (Physics.Raycast(rayorigin,out hitinfo))
               {
                   if (hitInfo.collider.tag=="Floor")
                   {
                       _pos = hitInfo.point;
                       distance = Vector3.Distance( _pos,transform.position);
                   }
               }
          }
     }
}

这里咋们需要两个变量,一个是存储要去的目的地,另一个是存储目标距离。

为了找出要到达的地方,因此需要方向,它被定义为从当前位置减去_pos(target destination)。

由于方向可能很远,需要将数字归一化为1,重要的是,当计算方向时,将它放在鼠标点击代码块之外,因为计算距离是经常性的。

事实上,如果不做这些,下图就是较为意外的结果,因为它只会在单击时被调用。

ue3d - 在Unity中单击物体执行移动

咋们确定了方向后,还需要计算距离,也就是说这个角色要走多远,因此可以通过从鼠标位置的投射光线来做到这一点。

在光线投射之后,可以将击中的位置存储在hitinfo变量中,让pos与hitinfo.point相同,距离可以用Vector3 distance得到两点的差值

到这里就可以测试该项目的结果了。

ue3d - 在Unity中单击物体执行移动

以上是关于单击对象移动的全部内容,如果你有任何反馈,请随时在本页面下方留言。

相关信息

  • 类型:教程
  • 字数:364
  • 字符:1766
  • 使用软件:Unity2021.3.5f1
  • 说明:无
  • 编号:110231

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!