Unity3D 脚本编程与游戏开发

1.1 控制物体的运动

Visual Studio 版本 2022

Unity 版本 2022

构建模板:3d项目

创建一个3D-球的模型

Unity3D菜单: GameObject / 3D Object / Sphere

C#脚本事件

Start() 事件

游戏开始运行时,执行一次。适合组件的初始化。

Update() 事件

每帧都会执行,不同设备上更新频率有区别,系统硬件资源不足,帧率会降低。Update()函数实际执行频率是变化的。

Unity中控制台打印输出日志

Debug.Log("Hello World !");

修改物体位置

使用Translate()函数

transform.Translate(1.5f, 0, 0);

指定新位置

浮点类型数值,需要加f后缀

transform.position = new Vector3(1, 1.5f, 3);

平衡游戏在不同帧率下的表现效果

Time.deltaTime 是 Unity 中一个非常重要的属性,它表示自上一帧到当前帧所经过的时间(以秒为单位)。使用 Time.deltaTime 可以确保你的游戏逻辑和动画在不同帧率下表现一致。

使用 Vertical 和 Horizontal 处理输入

  1. Horizontal:通常映射到水平移动输入,例如 A 和 D 键或左和右箭头键。
  2. Vertical:通常映射到垂直移动输入,例如 W 和 S 键或上和下箭头键。
void Update()
{
// 获取水平和垂直输入
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");

// 创建一个新的 Vector3 来表示移动方向
Vector3 movement = new Vector3(horizontalInput, 0, verticalInput);

// 使用 Time.deltaTime 使移动速度与帧率无关
transform.Translate(movement * Time.deltaTime * 5f); // 5f 是移动速度
}

通过WASD控制小球移动

公开变量,可以在unity3D界面上动态调整,停止运行后将合适的数值修改到代码中即可。

public float speed = 10.0f;

Visual Studio 端完整代码示例:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{

// 移动速度
public float speed = 10.0f;

// Start is called before the first frame update
void Start()
{

// 初始化位置
transform.Translate(0, 0, 0);
}

// Update is called once per frame
void Update()
{
// 获取水平和垂直输入
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");

// 使用 Time.deltaTime 使移动速度与帧率无关
// 沿 x,y平面移动
transform.Translate(h * speed * Time.deltaTime, v * speed * Time.deltaTime, 0);
}
}