【Unity入门】11.脚本控制物体旋转

这篇具有很好参考价值的文章主要介绍了【Unity入门】11.脚本控制物体旋转。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Unity入门】脚本控制物体旋转

    大家好,我是Lampard~~

    欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢

【Unity入门】11.脚本控制物体旋转

(一)控制物体自转

(1)创建RotateLogic脚本

    上一篇文章我们学习了如何在脚本中获取物体对象,并使用transform组件下的translate接口使物体运动

    今天我们进一步学习,用脚本控制物体的旋转。首先需要借助一个风扇的模型便于观察:

【Unity入门】11.脚本控制物体旋转

     然后创建一个脚本RotateLogic挂在风扇上面,这个脚本的start方法和FirstLogic的一样可以读一下物体的名字看看有没有问题,设定一秒60帧,然后准备重写一下它的update方法就可以了

【Unity入门】11.脚本控制物体旋转

(2)欧拉角

    按照我们设置Position的思路,是不是在update新建一个Rotation的值,然后重新赋值给物体对象就可以了?

    然鹅并没有那么简单,在unity中Rotation并不是我们看到的三元值,而是一个四元组成的值,我们并不容易,且官方也不推荐我们直接修改rotation这个值

【Unity入门】11.脚本控制物体旋转

    那没有办法了吗?unity给我们提供了一个叫欧拉角的三元数,我们可以对transfrom组件下的欧拉角进行修改就可以实现我们对xyz方向的旋转 

    下面是欧拉角localEulerAngles的简介:

Unity中的欧拉角指的是物体绕三个坐标轴旋转的角度,分别称为俯仰角、偏航角和翻滚角。俯仰角是指物体绕x轴旋转的角度,偏航角是指物体绕y轴旋转的角度,翻滚角是指物体绕z轴旋转的角度。欧拉角的旋转顺序有多种,Unity中默认的旋转顺序是ZXY(翻滚角-俯仰角-偏航角)。在Unity中,我们可以使用Transform组件的eulerAngles属性来设置和获取物体的欧拉角值。

(3)让风扇旋转起来

    接下来就很简单了,仿照Position的做法,比如我们想让风扇1秒转一圈,那一帧就是就是跑360 * Time.deltaTime的角度,代码如下:

    void Update()
    {
        Vector3 angles = this.transform.localEulerAngles;
        angles.y += 360 * Time.deltaTime;
        this.transform.localEulerAngles = angles;
    }

    看看效果:

【Unity入门】11.脚本控制物体旋转

(4)transform.Rotate

    那有没有像translate这样方法,根据偏移值来设置物体的旋转呢?巧了,那就是transform.Rotate这个接口,它可以直接传入欧拉角的偏移值

    因此我们的三行代码就可以优化成一行:

    void Update()
    {
        this.transform.Rotate(0, 360 * Time.deltaTime, 0);
    }

(二)地月系统旋转

(1)地球自转

    接下来我们想实现地月系统旋转,首先第一步就是让地球自转起来,那很简单,我们把RotateLogic脚本挂在地球上就可以了

【Unity入门】11.脚本控制物体旋转

    嗯...有点快,我们把速度调低一些。缩小个4倍吧,让它四秒转一圈,看上去好多了

【Unity入门】11.脚本控制物体旋转

(2)月亮公转

    下一步就是实现月球的公转了,那要如何做呢?直接把RotateLogic挂给月亮也只是实现自转。这个时候我们就应该想起我们的父子关系

    如果月亮是地球的子节点,那地球转的时候就可以带动月亮转了

【Unity入门】11.脚本控制物体旋转

    但是问题来了,这样子的话月亮绕地球的转速就和地球自转的速度一样,我们知道地球一转一天,月球绕地球一周是需要27天的,速率明显不一样

    这个时候我们只需要在地球的位置挂载一个空节点作为旋转节点,调整其旋转速率,并让月亮成为它的子节点就可以了

【Unity入门】11.脚本控制物体旋转

    随便把速度设置为地球的三分一,看看效果:     

【Unity入门】11.脚本控制物体旋转

好啦今天就到这里,感谢阅读!!!
点赞,关注!!!

【Unity入门】11.脚本控制物体旋转文章来源地址https://www.toymoban.com/news/detail-441648.html

到了这里,关于【Unity入门】11.脚本控制物体旋转的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 之利用 localEulerAngle与EulerAngle 控制物体旋转

    欧拉角(Euler Angles)是一种常用于描述物体在三维空间中旋转的方法。它使用三个角度来表示旋转,分别绕物体的三个坐标轴(通常是X、Y和Z轴)进行旋转。这种表示方式的优势是直观且易于理解,但也存在一些问题,如万向锁问题。下面是一些关于欧拉角的重要概念: 欧拉

    2024年02月11日
    浏览(30)
  • 使用Unity的Input.GetAxis(““)控制物体移动、旋转

    ​Input.GetAxis(\\\"\\\") 是 Unity 引擎中的一个方法,用于获取游戏玩家在键盘或游戏手柄上输入的某个轴(Axis)的值。这里的 \\\"\\\" 是一个字符串参数,表示要获取的轴的名称。只要游戏运行Unity在后台就实时通过GetAxis这些定义好的方法帮你检测用户键盘、手柄、鼠标,你只需要用这个

    2024年02月08日
    浏览(36)
  • Unity 通过键盘鼠标控制物体移动、旋转、缩放的方法

    在Unity中,使用键盘ADWS键控制物体移动,通过鼠标左键控制物体旋转,鼠标中键控制物体缩放是再常见不过的方法。 方法如下:  效果如下:Unity 通过键盘鼠标控制物体移动、旋转、缩放_哔哩哔哩_bilibili

    2024年02月03日
    浏览(38)
  • Unity3D 控制物体移动且自动旋转

    直接上代码(改脚本挂载到游戏物体上) 第三人称摄像机移动

    2024年02月15日
    浏览(53)
  • 【Unity脚本开源】记录鼠标按下的位置和移动的距离来进行物体的旋转,并在鼠标释放后将物体恢复到初始旋转位置

    ♥️作者:白日参商 🤵‍♂️个人主页:白日参商主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油! 加油! 加油 🎈欢迎评论 💬点赞👍🏻 收藏 📂加关注+! 提针对这个需求,以下是示例脚本代码: ♥️作者

    2024年02月12日
    浏览(31)
  • Unity相机绕物体旋转、视野缩放功能的c#脚本实现(模拟物品展台功能),且相机参数可调

    为了实现照相机的物品展台功能,查询了网上各种各样的方法,有的需要导入资源包什么的,觉得都比较复杂。 代码部分参考了一位大佬的文章,这里附上文章链接。 ———————————————— 版权声明:本文为CSDN博主「董豪强」的原创文章,遵循CC 4.0 BY-SA版权协

    2024年02月11日
    浏览(32)
  • Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动

    教程相关资源 Unity 3D游戏开发+脚本编程完整指南(工程文件+PPT).zip Unity 脚本概览 脚本编写并不困难,但是如果直接从细节开始讲起,会让 读者难以看到脚本编程的全貌。因此本章不急于阐述脚本编写 的细节,只介绍简单的修改物体位置、处理用户输入和检测碰 撞的方法

    2024年02月21日
    浏览(53)
  • Unity角色或摄像机移动和旋转的控制脚本

    该脚本挂载到需要被移动、旋转控制的物体身上,也可以之间挂在到摄像机上! 挂载到摄像机上可以实现第一人称视角控制! 挂载到物体身上,配合摄像机跟踪脚本可以实现,第三人称视角控制!  将角色控制脚本挂给摄像机即可! 以下是角色控制脚本: 将上面, 角色控

    2024年02月06日
    浏览(38)
  • unity通过脚本实现漫游功能 wasd控制玩家移动,空格跳跃,鼠标控制视野旋转,滑轮控制镜头伸缩

    将场景中的摄像机删除,在玩家的控制面板中添加Camera组件,和rigibody组件   using System.Collections; using System.Collections.Generic; using UnityEngine; public class move : MonoBehaviour {     public float speed;     Rigidbody rigid;     void Start()     {                 rigid = GetComponentRigidbody();     }  

    2024年02月10日
    浏览(33)
  • unity手指、鼠标滑动实现物体360度旋转、点击按钮实现物体旋转

    先创建一个ObjectRotation 脚本 之后将该脚本拖动到需要转动的object上 因为如果每次都真机模拟回很麻烦,所以我加入了让鼠标代替手指滑动的脚本来代替手指输入 同样的也是先创建一个MouseRow 脚本 最后我还需要某笔画沿着坐标旋转,代码如下: 里面有我的其他参数,如果读

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包