在本课程中,我们将编写使游戏对象根据用户输入向上,向下,向左和向右移动的代码.这应该有助于我们更轻松地理解Unity脚本的工作流程.
请记住,每个GameObject至少有一个组件和减号; 变换的.特别之处在于游戏对象的变换也在Unity的脚本端显示为变量,因此我们可以通过代码对其进行修改.这也不仅限于变换; Unity中的所有组件都有属性,可以通过脚本中的变量访问这些属性.
让我们从我们的移动脚本开始.创建一个新脚本,并将其命名为"Movement".
现在,打开脚本,你会看到你在上一课中看到的相同内容.
让我们创建一个名为 speed 的公共浮点变量.在Unity中创建变量 public 具有很大的优势 :
变量显示为编辑器中的可修改字段,因此您无需手动调整代码中的值.
public class Movement : MonoBehaviour { public float speed; }
如果我们保存此脚本而不触及其他方法,则应在Unity中编译.
(您可以通过右下角的图标进行编译.)
接下来,将资源中的脚本拖放到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中的代码.
首先,我们创建一个名为
Input类负责从用户获取输入按键,鼠标输入,控制器输入等形式. GetAxisRaw方法稍微难以理解,所以我们稍后会再回过头来看.
接下来,我们更新我们的gameObject的位置为新的通过创建新的 Vector2 定义的位置. Vector2有2个参数,分别是 x和y 值.对于x值,我们提供对象的当前位置和速度之和,有效地将按键按下到位置的每一帧增加一些量.
保存此脚本并返回Unity.一旦编译成功,Unity将自动更新所有脚本,因此您不必一次又一次地重新连接脚本.
现在您已完成,请更改的值速度在GameObject的属性中说0.8.这很重要,因为较高的值会让玩家移动得太快.
现在,点击播放,看看你的第一款小游戏!
尝试按箭头键并四处移动.要停止游戏,只需再次按"播放"即可.您甚至可以实时调整速度,因此您无需一直停止和启动它.
在下一课中,我们将了解刚体和碰撞.