美文网首页Unity3d游戏开发
Unity3d 物体移动的方向和转向问题

Unity3d 物体移动的方向和转向问题

作者: 王广帅 | 来源:发表于2020-02-08 18:19 被阅读0次

需求场景

比如在屏幕中有一条鱼,它可以向左或向右移动,当它移到屏幕外面时,会和另外一个物体发生碰撞,碰撞之后,它需要向相反的方向移动。碰撞到右边的物体时,改为向左边移动,碰撞到左边的物体时,向左右移动。

物体移动的代码

这个代码简单:

   public int speed = 90;  //移动的速度
   public Vector3 moveDirection = Vector3.right; //移动的方向
  
  //直线移动
   private void StraightMove()
   {
       if (speed > 0)
       {
         transform.Translate(moveDirection * RealSpeed() * Time.deltaTime);
       }
   }
  void Update()
   {
           StraightMove();
   }

将这个代码挂在鱼的身上就可以向右直线移动了。

移动方向和物体朝向

首先,上面有代码是默认是向右移动的,当然鱼头的朝向也必须是向右的,要不然看起来就是鱼在倒着走了。假如它碰撞到了右边的物体,这个时候,要让它向左移动。我第一次实现的时候,是简单的把moveDirect修改为了Vector.left,显示的效果确实是向左移动了,但是鱼头还是向右的,是倒着走的。得把鱼头调过来呀,于是我把鱼旋转了180度。这个时候却发现鱼在倒着向右走了。


效果

如果仅仅是旋转180度,而moveDirection不变,还是Vector.right的话,就正常了,所以这个旋转是包含了方向的旋转的,

正解的解释

在旋转的时候,使用的是下面的代码:

transform.rotation = Quaternion.Euler(0, 0, 180);

它表示的是沿z轴旋转180度,这个时间物体的坐标系中,x轴和y轴都发生了旋转,而Vector.right并不是字面意思一直向右,而是沿x轴向右,即x轴的箭头方向,所以如果要返回,只需要旋转即可,不需要修改移动的方向。


正解效果

从上面的效果可以看到,是x轴发生了旋转,所以还是向“右”移动。


欢迎关注

相关文章

  • Unity3d 物体移动的方向和转向问题

    需求场景 比如在屏幕中有一条鱼,它可以向左或向右移动,当它移到屏幕外面时,会和另外一个物体发生碰撞,碰撞之后,它需...

  • 无标题文章

    刚刚发现了一个UNITY3D中物体移动比较齐全的方法,借鉴的,希望对大家都有所帮 unity3d中控制物体移动方法...

  • 【Unity】控制物体移动转向

    编写日期:2020-04-19 16:46:30 星期日 代码控制 Player 移动

  • Unity3D物体移动方式学习笔记

    在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position。 一、通...

  • Unity3D 物体移动方式总结

    在unity3d中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position。 1.通...

  • Unity3D Player角色移动控制脚本

    1. 简介 在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的positio...

  • Unity3D 物体移动方式总结

    1. 简介 在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的positio...

  • 一、1、Unity3D 物体移动方式总结

    1.简介 在unity3d中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position...

  • Unity3D 物体移动

    两点之间移动的方法 (1)Lerp函数 注意事项:如果想A点直接到B点那么T就应该是1,T的取值0-1。 (1)S...

  • 摄像机的移动跟随缩放旋转(优化方案)

    当我们在用摄像机跟随目标物体移动时,可能还伴随着移动物体的旋转和场景的远近等等。那么问题来了,当我们旋转物体时,出...

网友评论

    本文标题:Unity3d 物体移动的方向和转向问题

    本文链接:https://www.haomeiwen.com/subject/nqxixhtx.html