当前位置:   article > 正文

4.Unity中的 Transform,旋转,移动的使用_unity transform.rotate

unity transform.rotate

在这里插入图片描述
脚本文件的名称必须和C#脚本的名称相同

在这里插入图片描述

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的值

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

旋转:

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

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类用于旋转或变换向量和点。
在这里插入图片描述

旋转的使用:

自转:

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

公转:

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


    void Update()
    {
        transform.RotateAround(target.transform.position, Vector3.forward, speed);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

移动:

根据玩家所按下的 键进行相应的操作 以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°
        }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

利用鼠标控制旋转:

    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轴旋转

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

转自:点击此处

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/140680
推荐阅读
相关标签
  

闽ICP备14008679号