5733人加入学习
(53人评价)
Unity最全最完整的零基础入门教程-Luna's Fantasy

制作完成于2023年8月1日,基于Unity2023.1.1

价格 免费

改变帧率

Application.targetFrameRate = 60;
  • 这行代码用于设置游戏的目标帧率为60帧每秒。这意味着游戏将尽力在每秒渲染60帧画面,以实现更流畅的动画和交互。
[展开全文]

使用Input.GetAxis()移动游戏对象
 

void Update()
{
    // 获取水平和垂直输入值
    float horizontal = Input.GetAxis("Horizontal");
    float vertical = Input.GetAxis("Vertical");

    // 获取游戏对象的当前位置
    Vector2 position = transform.position;

    // 使用输入值来修改位置
    position.x = position.x + 2.5f * horizontal * Time.deltaTime;
    position.y = position.y + 2.5f * vertical * Time.deltaTime;

    // 将新的位置应用到游戏对象
    transform.position = position;
}

获取输入值

float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");

- 这两行代码用于获取水平和垂直输入值。`Input.GetAxis()` 方法用于获取输入轴的值,根据传入的参数来选择特定的输入轴。在这里,我们分别获取了水平和垂直方向上的输入值。

修改位置

position.x = position.x + 2.5f * horizontal * Time.deltaTime;
position.y = position.y + 2.5f * vertical * Time.deltaTime;

- 这两行代码使用获取到的输入值来修改游戏对象的位置。水平输入值(`horizontal`)用于控制水平移动,垂直输入值(`vertical`)用于控制垂直移动。
- 乘以 `2.5f` 用于调整移动速度。你可以根据需要调整此值来控制移动速度。
- `Time.deltaTime` 用于考虑到每帧的时间间隔,以使移动操作平滑,不受帧率的影响。

[展开全文]

在代码中,`f` 是一个后缀,用于将数值文字(literal)标记为浮点数(float literal)。在C#中,编译器默认将小数点后的数字视为`double`类型,而不是`float`类型。为了明确告诉编译器这是一个`float`类型的值,我们可以在数值后面加上`f`后缀。

例如,`0.1f` 表示一个`float`类型的值,而 `0.1`(没有`f`后缀)将被视为`double`类型的值。

在Unity中,通常使用`float`类型来表示位置、旋转、缩放等变换信息,因为这些信息的精度通常不需要太高。因此,在修改坐标值时,使用`0.1f` 表示0.1个浮点数单位的增量,这是一种常见的做法。

新手之跃宝箱密码:b

[展开全文]

获取"Luna"的位置

Vector2 position = transform.position;

在这一行代码中,我们首先声明了一个名为`position`的`Vector2`类型的变量,这个变量将用于存储"Luna"游戏对象的位置信息。

通过`transform.position`,我们获取到了"Luna"游戏对象的当前位置,并将其赋值给了`position`变量。这意味着`position`现在包含了"Luna"的当前位置(包括X和Y坐标)。

修改位置变量

position.x = position.x + 0.1f; // 让人物“Luna”向右进行移动

在这一行代码中,我们修改了`position`变量的X坐标,以实现"Luna"向右移动。具体来说,我们将`position`的X坐标增加了0.1个单位,这会使"Luna"在X轴方向上向右移动一小段距离。

 重新赋值位置

transform.position = position; // 把位置再重新赋值


最后一行代码是将修改后的`position`变量的值重新赋给了"Luna"游戏对象的位置。这意味着我们的移动操作已经生效,"Luna"的位置被更新,游戏对象在画面上发生了实际的位移。

  • 如果你发现"Luna"一直在移动,通常是因为代码中的移动逻辑被放在了 Update() 方法中,而 Update() 方法会在每一帧都被调用,所以移动操作会一直执行。这可能不是你想要的行为,特别是如果你只想让"Luna"移动一次或在某个条件下移动。

 

[展开全文]

什么是变量?

在计算机编程中,变量就像一个命名的盒子,用来存储数据。这个盒子有一个名字,你可以通过这个名字来访问里面的内容。

举个例子: 假设你有一个盒子,名字叫`treasureBox`。你可以把一些贵重的物品放进这个盒子里,然后通过`treasureBox`这个名字来找到和取出这些物品。在编程中,变量就像这个`treasureBox`,是用来存储数据的容器。

声明变量

在代码中,声明一个变量的过程就是创建一个盒子,然后给这个盒子起一个名字。下面是一个示例:
 

Vector2 position;

在这里,我们声明了一个名为`position`的变量。这告诉计算机在内存中为`position`分配适当的空间,以便存储一个`Vector2`类型的值。

变量类型

变量类型告诉计算机我们要存储哪种类型的数据,以便计算机可以为变量分配正确大小的内存空间。在这里,`Vector2`是一种特殊的数据类型,用于存储包含两个数字的值,通常用于表示二维坐标,包括X和Y坐标。

赋值操作符

position = transform.position;

在这行代码中,我们使用了赋值操作符`=`。它的作用是将右侧的值(`transform.position`)赋给左侧的变量(`position`)。这意味着我们将"Luna"游戏对象的位置信息赋给了`position`变量,就像将一个物品放入了`treasureBox`盒子中一样。

[展开全文]

探索基础脚本结构

 了解基本结构

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

public class NewBehaviourScript : MonoBehaviour
{
    void Start()
    {
        // 在游戏开始时执行的代码
    }

    void Update()
    {
        // 在每一帧更新时执行的代码
    }
}

命名空间与引用

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
  1. - `using` 关键字用于引入命名空间,让我们可以使用其中的类和方法。
  2. - `System.Collections` 和 `System.Collections.Generic` 命名空间提供了许多集合类(如列表、字典等)。
  3. - `UnityEngine` 包含了许多Unity引擎的核心功能。

类定义

public class NewBehaviourScript : MonoBehaviour

- `public` 表示这个类是公共的,可以在其他脚本中访问。
- `class` 关键字表示这是一个类。
- `NewBehaviourScript` 是类的名称,可以根据需要进行更改。
- `: MonoBehaviour` 表示这个类继承自`MonoBehaviour`类,这是Unity所有脚本的基类。

Start() 方法

void Start()
{
    // 在游戏开始时执行的代码
}

- `void` 表示这个方法不返回任何值。
- `Start()` 是一个特殊的方法,在游戏开始时执行一次。

Update() 方法
 

void Update()
{
    // 在每一帧更新时执行的代码
}

- `Update()` 也是一个特殊方法,它在每一帧都会被调用。

 

新手之跃宝箱密码:X

[展开全文]

Input.GetAxis()的参数是Input Manager里面的

[展开全文]

Input用于监听对象

Input.GetAxis("监听对象")

[展开全文]

双方都要有碰撞器且一方有刚体且最好是运动方

[展开全文]

变量是内存存储的一个位置

相当于给内存地址取一个名字

变量类型:存储的盒子的类型( )

[展开全文]

Order in layer 属性 : 值越大越后渲染,值大的会覆盖值小的。

[展开全文]

907课程提示转码失败。不播放视频。麻烦管理员解决一下,谢谢

[展开全文]