【Unity 20】 Unity中的 Transform,旋转,移动的使用

PS:本系列笔记将会记录我此次在北京学习Unity开发的总体过程,方便后期写总结,笔记为日更。
笔记内容均为 自己理解,不保证每个都对。

Part 1 前期复习:

在这里插入图片描述
脚本文件的名称必须和C#脚本的名称相同
在这里插入图片描述
运行时的执行顺序(截取自帮助文档):
在这里插入图片描述

Part 2 Transform:

Transform组件可以获得并修改 游戏物体的transform栏的信息
即位置,旋转,缩放
在这里插入图片描述
例如:

        //this表示当前游戏物体,即脚本挂在什么物体上,this就指向该物体
        Debug.Log(this.transform.position.x);       //世界坐标X的值
        Debug.Log(this.transform.localPosition.x);  //父类坐标X的值
        Debug.Log(this.transform.rotation.x);       //世界旋转X的值
        Debug.Log(this.transform.localRotation.x);  //父类坐标旋转X的值
        Debug.Log(this.transform.localScale.x);    //父类坐标缩放X的值
        Debug.Log(this.transform.lossyScale.x);    //世界坐标缩放X的值

Part 3 旋转:

旋转主要通过Tranform组件下的RotateRotateAround来进行设置

Rotate的命名格式为:public void Rotate(Vector3 axis, float angle);
RotateAround的命名格式为:public void RotateAround(Vector3 point, Vector3 axis, float angle);

Vector 3:
表示 3维向量数组,表示3D的向量和点。用于在Unity传递3D位置和方向。它也包含做些普通向量运算的函数。除了下面列出的函数,其他类用于处理向量和点。例如Quaternion(四元数)和Matrix4x4类用于旋转或变换向量和点。

方法含义
Vector3.forwardVector3(0, 0, 1).的缩写
Vector3.backVector3(0, 0, -1).的缩写
Vector3.upwriting Vector3(0, 1, 0).的缩写
Vector3.downVector3(0, -1, 0).的缩写
Vector3.leftVector3(-1, 0, 0).的缩写
Vector3.rightVector3(1, 0, 0).的缩写
Vector3.oneVector3(1, 1, 1).的缩写
Vector3.zeroVector3(0, 0, 0).的缩写

旋转的使用:

自转:

transform.Rotate(Vector3.up, 0.5f);		//绕着Y轴旋转,速度为0.5f

公转:

    public GameObject target;		//目标中心
    public float speed = 0.5f;			//旋转速度


    void Update()
    {
        transform.RotateAround(target.transform.position, Vector3.forward, speed);
    }

由这两种代码,即可完成 太阳系的自传和公转模拟练习:
在这里插入图片描述

Part 4 移动:

根据玩家所按下的 键进行相应的操作 以WSAD为例
Time.deltaTime(增量时间),若播放速度为1秒60帧,则增量时间为 1 / 60

        if (Input.GetKey("w"))
        {
            tmpCube.transform.Translate(new Vector3(0.5f, 0, 0) * Time.deltaTime, Space.Self);      //前进    (0.5f, 0, 0) * Time.deltaTime(增量时间)
        }
        if (Input.GetKey("s"))
        {
            tmpCube.transform.Translate(new Vector3(-0.5f, 0, 0) * Time.deltaTime, Space.Self);     //后退    (-0.5f, 0, 0) * Time.deltaTime(增量时间)
        }
        if (Input.GetKey("a"))
        {
            this.transform.Rotate(new Vector3(0, -1, 0));       //旋转-1°
        }
        if (Input.GetKey("d"))
        {
            this.transform.Rotate(new Vector3(0, 1, 0));        //旋转1°
        }

利用鼠标控制旋转:

    public float tmpX = 0f;
    public float tmpY = 0f;



        float x = Input.GetAxis("Mouse X");
        float y = Input.GetAxis("Mouse Y");
        tmpX = tmpX + x;
        tmpY = tmpY + y;
        this.transform.rotation = Quaternion.Euler(0, tmpX * speed, 0);		//绕着Y轴旋转

以上就可以做出一个坦克移动的Demo 炮塔上下移动与旋转同理
在这里插入图片描述

  • 12
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值