【3min 简单示例】Unity 通过 C# 脚本旋转游戏物体

以匀速旋转一个立方体对象为例,展示具体旋转编码操作

  • 话不多说,上代码,超简单必懂!不懂可以留言喔 ~

Unity 通过 C# 脚本旋转游戏物体

  1. 新建脚本文件 xxx.cs:Project 窗口右键 - Creat - C# Scripts - 右键创建好的 C# 文件 - Rename
    在这里插入图片描述
  2. 双击 C# 文件在 VS 中打开,初始内容如下:
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class xxx : MonoBehaviour  
    {
        // Start is called before the first frame update
        void Start()
        {
        }
    
        // Update is called once per frame
        void Update()
        {
        }
    }
    
  3. 修改代码,保存(保存之后会自动编译,不用手动管)
    // 匀速转动核心代码
    float speed = 30.0f;
    this.transform.Rotate(0, speed*Time.deltaTime, 0);	
    

    //匀速转动完整代码
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class xxx : MonoBehaviour  // 类名与文件名一致,需要修改的话:右键类名 - 重命名 - 即可同步修改
    {
        // Start is called before the first frame update
        void Start()
        {
            // Debug.Log("** xxx ... ");  // 运行后,会在控制台窗口显示
            
    		GameObject obj = this.gameObject;  // 获取当前所挂载的游戏物体
            // Debug.Log("** NAME: " + obj.name);  // 打印游戏物体名称
    		
    		// #### 场景 1. 游戏开始前使得物体面向给定目标,如面向游戏物体 "flag_xxx" 
    		GameObject flag = GameObject.Find("flag_xxx"); 
    		this.transform.LookAt(flag.transform);  // 使得当前游戏物体 obj 的z轴指向目标物体 flag
    
    		
    		// #### 场景 2. 游戏开始前使得物体旋转给定角度,如 (0, 45, 0)
    		// this.transform.rotation = ... // .rotation 需要指定四元组,不方便操作,所以我们使用如下:
    		this.transform.eulerAngles = new Vector3(0, 45, 0)
        }
    
        // Update is called once per frame (每帧都更新,帧率不固定)
        void Update()
        {
            Debug.Log("Time delta" + Time.deltaTime);  // 打印两帧时间间隔
    
    		// #### 场景 3. 非严格匀速转动:每帧转动固定角度,如 0.5f
    		// Vector3 angles= this.transform.localEulerAngles;
    		// angles.y += 0.5f;
    		// this.transform.localEulerAngles= angles;
    
    		// #### 场景 4 【更新 localEulerAngles写法】. 严格匀速转动,速度设定为 speed 
    		// Vector3 angles= this.transform.localEulerAngles;
    		// float speed = 30.0f;
    		// angles.y += speed*Time.deltaTime;
    		// this.transform.localEulerAngles= angles;
    		
    		// #### 场景 4 【简单写法:利用角度增量更新】. 严格匀速转动,速度设定为 speed 
    		float speed = 30.0f;
    		this.transform.Rotate(0, speed*Time.deltaTime, 0);	  // 默认为	space.Self -- 物体自身坐标系
    		// this.transform.Rotate(0, speed*Time.deltaTime, 0, Space.World);  // Global -- 世界坐标系 
    
    		// #### 场景5. 公转:围绕另一个物体旋转
    		//在层级窗口构建父子关系,父物体转动时,子物体即会随着父物体转动
    		// this.transform.parent.Rotate(0, speed*Time.deltaTime, 0);
    		// 获取父物体对应的 unity 手册:https://docs.unity3d.com/cn/2020.3/ScriptReference/Transform-parent.html
        }
    }
    
  4. 挂载:直接拖动到目标物体的 Inspector 窗口中
  5. 运行:运行游戏,脚本会自动被加载、运行

欢迎关注 、订阅专栏 【unity 新手教程】谢谢你的支持!💜💜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值