问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Unity新手教程:通过C#脚本移动游戏物体

创作时间:
作者:
@小白创作中心

Unity新手教程:通过C#脚本移动游戏物体

引用
CSDN
1.
https://blog.csdn.net/CODE_RabbitV/article/details/145618234

本文将通过一个简单的示例,介绍如何在Unity中使用C#脚本移动游戏物体。从创建脚本到最终运行,每个步骤都配有详细说明,适合Unity引擎的初学者学习。

Unity 通过 C# 脚本移动游戏物体

  1. 新建脚本文件

在Project窗口中右键点击,选择Creat -> C# Scripts,然后右键创建好的C#文件,选择Rename。

  1. 打开并编辑C#脚本

双击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()
    {
    }
}
  1. 修改代码并保存

保存之后会自动编译,不用手动管。以下是完整的代码示例:

// 匀速移动核心代码
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 -- 世界坐标系 
    }
}
  1. 挂载脚本

将编写好的脚本直接拖动到目标物体的Inspector窗口中。

  1. 运行游戏

运行游戏,脚本会自动被加载、运行。

扩展阅读:

  • 如果你想了解旋转游戏物体,可以参考:Unity 通过 C# 脚本旋转游戏物体
  • Unity 使用 C# 进行开发,不熟悉的友友可以参考:C#官方文档
  • Unity 官方手册:Unity官方手册
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号