我有个物体他只能朝自身Z方向移动,然后他有个旋转角度,我如何做才能让这个物体移动到指定的位置和方向。

伊克西 2023-07-07 12:13:22

我有一个小车他只能往前开,然后他有移动速度和转速度。现在设定了一个目的地和方向,怎么让他直接开到那个位置和方向。


        Vector3 direction = Target.position - transform.position;

        float angle = Vector3.Angle(direction, transform.forward);
        transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(direction), RotationSpeed * Time.deltaTime);

       

        if (direction.sqrMagnitude > 0.001f)
        {
            transform.Translate(Vector3.forward * MoveSpeed * Time.deltaTime);
        }

我移动看到这个但这个有2个问题一个是转的没走的快就会一直转圈圈,甚至也没法到指定的方向最多也只是到那个位置

...全文
429 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-07-07
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/7975194, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
sd1840888 2023-10-10
  • 打赏
  • 举报
回复

你这里 transform.Translate(Vector3.forward * MoveSpeed * Time.deltaTime);是沿着世界坐标系的Z轴正方向平移。你要改成沿物体本地坐标系transform.forward
另外你这里的旋转角度是指什么?是有角速度旋转还是能直接改变物体旋转方向?前者稍微麻烦一点在更新函数里每帧修正转转角度,后者的话可以直接让物体朝向目标点方向transform.LookAt(new Vector3(Target.position.x,transform.position.y,Target.position.z))。

2,589

社区成员

发帖
与我相关
我的任务
社区描述
Unity3D相关内容讨论专区
游戏unity 技术论坛(原bbs)
社区管理员
  • Unity3D
  • 芝麻粒儿
  • 「已注销」
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Unity3D社区公告:

  1. 社区致力于解决各种Unity3D相关的“疑难杂症”。
  2. 社区不允许发布与Unity3D或相关技术无关内容。
  3. 社区版主邀请各位一道为打造优秀社区不懈努力。

试试用AI创作助手写篇文章吧