承接上篇博客,我们已经将游戏需要的背景、动物等一些基本的属性给配置好了,接下来将在主人物小鸟身上添加一个脚本,用以增加交互性。
一.添加脚本选中我们的主人公小鸟,在它的属性框上点击最下方增加按钮,选择添加一个C#脚本,并且命名为Birds:
修改名称并且点击添加:
随后你就可以在一个不起眼的地方看见了你添加到的脚本:
我们单击以下这个地方,可以跳转至脚本当前所在位置,如果我们双击,则会打开脚本编辑器,如果你有按照我之前第一篇说过的操作的话:
我们双击打开VS编辑器,进入到脚本的编写
二.编写脚本打开脚本之后,我们可以看到以下的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Birds : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
除了开头调用了几个必要的库之外,我们需要关注的是Start()以及Update()这两个函数,根据文档,Start()函数相当于一个初始化的操作,一些变量在这里可以被赋予一些初始值,而Update()则可以简单理解为实时更新。我们第一个想到的交互可能是点击一下鼠标或者按下空格键,我们的主角小鸟可以向上飞,随后又因重力掉下来,代码可以按照以下格式编写:
public class Birds : MonoBehaviour
{
public float upForce = 20f;
private bool isDead = false;
private Rigidbody2D rb2d;
// Start is called before the first frame update
void Start()
{
rb2d = GetComponent();
}
// Update is called once per frame
void Update()
{
if (isDead == false)
{
if (Input.GetMouseButtonDown(0))
{
rb2d.velocity = Vector2.zero;
rb2d.AddForce(new Vector2(0, upForce));
}
}
}
}
这段代码就做了两件事情:添加死亡判断条件以及点击鼠标左键可让角色获取一个向上的力:
至于向上的力有多大,可以通过共有变量实现:
设置的这个共有变量还可以在unity界面上实时调整,以调整成最适合的速度:
当我们角色与草地相撞时,即判断为游戏失败,所以添加一个失败条件判断:
编写完代码,保存然后切换到unity中,运行一下,可以发现点击鼠标左键可以让角色往上飞,如果觉得力不够大,则可以修改UpForce的大小直至自己满意。接下来完成角色碰到地面时,判断为死亡(isDead)部分,在脚本中添加以下函数:
void OnCollisionEnter2D ()
{
rb2d.velocity = Vector2.zero;
isDead = true;
}
这个函数属于unity中一个监听函数,当脚本添加这个函数后,一旦和别的碰撞体发生碰撞,则会执行该函数里面的代码,添加完成后运行以下游戏,可以发现小鸟碰到地板之后就不能再飞起来了。



