当前位置: 首页 > news >正文

【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 = 1.0f
    this.transform.Translate(speed * Time.deltaTime, 0, 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);  // 打印游戏物体名称
    		
            Vector3 pos = obj.transform.LocalPosition;  // 如果需要全局坐标系下的位置,则用 .position
            Debug.Log("** POS: " + pos);  // 打印位置,LocalPosition 与 inspector 中显示一致
    
    		// #### 场景 1. 游戏开始前移动物体到指定初始位置
    		// obj.transform.localPosition = new Vector3(1.0f, 1.1f, 1.2f);  // 移动到指定位置 (1.0f, 1.1f, 1.2f)
    		
        }
    
        // Update is called once per frame (每帧都更新,帧率不固定)
        void Update()
        {
            Debug.Log("Time delta" + Time.deltaTime);  // 打印两帧时间间隔
    
    		// #### 场景 2. 非严格匀速移动:每帧移动固定距离,如 0.01f
    		// Vector3 pos = this.transform.localPosition;
    		// pos.x += 0.01f;
    		// this.transform.localPosition = pos;
    
    		// #### 场景 3 【更新 localPosition 写法】. 严格匀速移动,速度设定为 speed 
    		//Vector3 pos = this.transform.localPosition;
    		//float speed = 1.0f;
    		//pos.x += speed*Time.deltaTime;
    		//this.transform.localPosition = pos;	
    		
    		// #### 场景 3 【简单写法:利用坐标增量更新】. 严格匀速移动,速度设定为 speed 
    		float speed = 1.0f
    		this.transform.Translate(speed * Time.deltaTime, 0, 0);	  // 默认为	space.Self -- 物体自身坐标系
    		// this.transform.Translate(speed * Time.deltaTime, 0, 0,Space.World);  // Global -- 世界坐标系 
        }
    }
    
  4. 挂载:直接拖动到目标物体的 Inspector 窗口中

  5. 运行:运行游戏,脚本会自动被加载、运行


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

  • Unity 使用 C# 进行开发,不熟悉的友友 👉 C#官方文档指路
  • Unity 官方手册指路

相关文章:

  • 6. Docker 本地镜像发布到私有库
  • RK3588 Linux平台部署DeepSeek模型教程
  • 20250212:sigmastar系列2-获取UUID进行授权
  • 自动驾驶---如何打造一款属于自己的自动驾驶系统
  • 【开源免费】基于Vue和SpringBoot的旅游管理系统(附论文)
  • 亚冬会绽放“云端”,联通云如何点亮冰城“科技之光”?
  • XML 命名空间
  • Python 面向对象的三大特征
  • 给压缩文件加密码的5种方法(win/mac/手机/网页端)
  • 渲染相机设置 pyrender cameralib
  • Spring Cloud + Nacos + K8S 零影响发布方案
  • LeetCode每日精进:链表的回文结构
  • vue框架生命周期详细解析
  • 【含开题报告+文档+PPT+源码】基于spring boot的固定资产管理系统
  • UIView 与 CALayer 的联系和区别
  • Java每日精进·45天挑战·Day18
  • AI Agent未来走向何方?
  • 如何在割接过程中确保服务不中断?
  • 在Spring Cloud项目中集成MySQL、MyBatis-Plus与HikariCP
  • 【设计模式】【行为型模式】命令模式(Command)
  • 净海护渔,中国海警局直属第一局开展伏季休渔普法宣传活动
  • 空间站第八批科学实验样品返抵地球并交付科学家
  • 西部航空回应飞机上卖彩票:与重庆福彩合作,仅部分航班售卖
  • 人民日报评论员:焕发风雨无阻、奋勇前行的精气神
  • 山西太原一居民小区发生爆炸,应急管理部派工作组赴现场
  • 摩根大通任命杜峯为亚太区副主席,加码中国市场业务布局