📅  最后修改于: 2020-10-29 04:18:37             🧑  作者: Mango
在本课程中,我们将编写代码,使gameObject根据用户的输入上下移动。这应该有助于我们更轻松地了解Unity脚本的工作流程。
请记住,每一个游戏对象至少有一个组件-变换。特殊之处在于gameObject的Transform在Unity的脚本编写方面也显示为变量,因此我们可以通过代码对其进行修改。这也不限于变换; Unity中的所有组件均具有属性,可通过脚本中的变量进行访问。
让我们从运动脚本开始。创建一个新脚本,并将其命名为“ Movement”。
现在,打开脚本,您应该看到与上一课相同的内容。
让我们创建一个名为speed的公共float变量。在Unity中将变量公开具有很大的优势-
该变量在编辑器中显示为可修改的字段,因此您不必手动调整代码中的值。
public class Movement : MonoBehaviour {
public float speed;
}
如果我们保存该脚本而不接触其他方法,则应在Unity中编译。
(您可以查看何时由右下角的图标。)
接下来,将脚本从Assets拖放到GameObject上。如果操作正确,这就是您在GameObject的属性中看到的内容-
由于速度值是可调的,不需要一直在代码中进行更改,因此我们可以使用update()方法代替start()。
现在让我们考虑一下Update方法的目标-
检查用户输入。
如果有用户输入,请阅读输入说明。
根据对象的速度和方向更改其变换的位置值。为此,我们将添加以下代码-
void Update() {
float h = Input.GetAxisRaw(“Horizontal”);
float v = Input.GetAxisRaw(“Vertical”);
gameObject.transform.position = new Vector2 (transform.position.x + (h * speed),
transform.position.y + (v * speed));
现在让我们讨论breif中的代码。
首先,我们创建一个名为h的浮点变量(对于水平),其值由Input.GetAxisRaw方法给出。此方法返回-1、0或1,具体取决于玩家在向上/向下/向左/向右箭头上按下的键。
Input类负责以按键,鼠标输入,控制器输入等形式从用户获取输入。 GetAxisRaw方法有点难于理解,因此我们稍后再讲。
接下来,我们通过创建新的Vector2将gameObject的位置更新为定义的新位置。 Vector2具有2个参数,分别是其x和y值。对于x值,我们提供对象的当前位置和它的速度的总和,有效地将按键被按下到它的位置的每一帧增加一些。
保存此脚本并返回到Unity。成功编译后,Unity会自动更新所有脚本,因此您不必一次又一次地重新附加脚本。
至此,将GameObject属性中的speed值更改为0.8。这很重要,因为更高的值会使玩家移动得太快。
现在,点击播放,看看您的第一个小型游戏正在运行!
尝试按箭头键并四处移动。要停止游戏,只需再次按Play。您甚至可以实时调整速度,因此您不必一直停止并启动它。
在下一课中,我们将学习刚体和碰撞。