判断玩家的选择最常用的判断语句——ifC#游戏开发快速入门大学霸

判断玩家的选择最常用的判断语句——ifC#游戏开发快速入门大学霸

C#游戏开发快速入门

5.2  判断玩家的选择判断玩家的选择最常用的判断语句——ifC#游戏开发快速入门大学霸

上一节说明了,脚本中的判断语句对于游戏的重要性,但是列举的例子还是太抽象了。读者无需为此感到困惑,作者可以在此处列举些更实际的例子:玩家是否按下了游戏视图中的特定按钮,或者键盘上的特定按键,玩家是否击败了小怪等等。这些都是游戏脚本中需要使用判断语句的地方。

5.2.1  最常用的判断语句——if判断玩家的选择最常用的判断语句——ifC#游戏开发快速入门大学霸

在生活中,人类习惯使用“是”和“否”做出判断,但在游戏的脚本中,通常是使用“真”和“假”来做出判断的。本小节将以脚本中最常用的if语句来说明,在脚本中做出判断的方法。

1.if语句判断玩家的选择最常用的判断语句——ifC#游戏开发快速入门大学霸

在脚本中,if语句的书写格式如下,表示的游戏执行流程如图5-2所示。

if(需要判断的部分)

{

//语句或者语句块;判断玩家的选择最常用的判断语句——ifC#游戏开发快速入门大学霸

}

q  if及其后面的括号“( )”是必不可少的;

q  大括号“{ }”里包含的是语句块,即多条语句,如果语句块里只有一条语句,那么大括号“{ }”就可以省略;

q  当从判断部分得出的结论是true时,就执行大括号里面的语句,否则就直接跳过大括号里的语句;

图5-2  if语句表示的游戏执行流程图

2.需要判断的部分

这部分代码可以是表达式,也可以是方法。但是无论如何,这个部分应该可以明确的给出true或者false。true和false实际上是布尔类型的数据(在第2章中曾以表格的形式列出)。也就是说,从需要判断的部分里,可以得到一个数据,而这个数据是布尔类型的。至于表达式,它既可以是逻辑表达式,又可以是关系表达式,如图5-3所示。

图5-3  判断部分的构成和结果判断玩家的选择最常用的判断语句——ifC#游戏开发快速入门大学霸

3.逻辑表达式

构成逻辑表达式的逻辑运算符有3种:!(非)、&&(与)和||(或),这种表达式的运算结果如表5.1所示。

表5.1  逻辑表达式的运算结果

a b !a !b a&&b a||b
true true false false true true
true false false true false true
false true true false false true
false false true true false false

注释:a和b是参与逻辑运算的两个数据。

4.关系表达式判断玩家的选择最常用的判断语句——ifC#游戏开发快速入门大学霸

构成关系表达式的关系运算符有6种,它们的名称、使用示例及功能如表5.2所示。

表5.2  关系运算符、使用示例及功能

关系运算符 名称 使用示例 功能
== 等于 a == b a等于b时,true,否则,false
!= 不等于 a != b a不等于b时,true,否则,false
> 大于 a > b a大于b时,true,否则,false
< 小于 a < b a小于b时,true,否则,false
>= 大于等于 a >= b a大于等于b时,true,否则,false
<= 小于等于 a <= b a小于等于b时,true,否则,false

5.2.2  if语句游戏示例判断玩家的选择最常用的判断语句——ifC#游戏开发快速入门大学霸

请按照下面的步骤,完成游戏示例的制作:

(1)为游戏场景添加3个游戏对象:Directional light、Sphere和Plane。调节各游戏对象在游戏场景中的位置、朝向和大小,如图5-4所示。得到的游戏场景和游戏视图,如图5-5所示。

图5-4  设置各游戏对象Transform组件下的属性

图5-5  在Scene和Game视图里,查看各游戏对象的相对位置,以及游戏视图效果

Sphere是玩家在游戏中需要操作的游戏对象,而Plane则是为了模拟游戏中的“地面”而存在。

(2)在Hierarchy视图里选中Sphere对象,然后单击Component|Physics|Rigidbody命令,即可为Sphere对象添加刚体(Rigidbody)组件,如图5-6所示,此组件将使得Sphere对象如现实世界一般,会受到重力的影响。如果Sphere在空中的话,那么它就会因为收到重力的影响而下坠。

图5-6  为Sphere对象添加的刚体组件

(3)打开脚本MyScript,并添加下面的代码:

01     using UnityEngine;

02     using System.Collections;

03

04     public class MyScript : MonoBehaviour

05     {

06              private GameObject mySphere;

07              private Vector3 myVec;

08              void Start()

09              {

10                       mySphere = GameObject.Find (“Sphere”);

11              }

12              void Update()

13              {

14                       myVec = mySphere.transform.position;

15                        //判断小球是否在Y轴方向上,超过了一定的范围,简单来说就是是否达到了一定的高度

16                       if(myVec.y > 4)

17                                 myVec.y = 4;

18                       mySphere.transform.position = myVec;

19              }

20              void FixedUpdate()

21              {

22                        //判断玩家是否按下了鼠标的左键

23                       if(Input.GetMouseButton(0))

24                                 mySphere.rigidbody.AddForce (Vector3.up*20);

25              }

26     }

将此脚本赋予Main Camera对象。

q  代码16、17行是if语句,括号里表示判断的部分是一个关系表达式。因为只有17行一条语句,所以没有使用大括号“{ }”,当关系表达式的值为true时,执行此语句;

q  代码23、24行是if语句,括号里表示判断的部分是一个方法,即Input.GetMouseButton(),作用是检测玩家是否按下了鼠标的左键。同样只有24行一条语句,所以也省略了大括号“{ }”,当方法返回的值是true时,执行此语句;

提示:Input.GetMouseButton()帮助文档的文字描述如图5-7所示,从中可以看出方法会返回bool类型的数据,而且判断的标准就是玩家是否持续按下了指定的鼠标按键。

图5-7  Input.GetMouseButton()的帮助信息判断玩家的选择最常用的判断语句——ifC#游戏开发快速入门大学霸

(4)运行游戏,由于球体最初在空中,此时球体只是受到了重力的影响,因此会向下坠落,直到降落到“地面”上为止。如果玩家此时按下鼠标左键的话,就会给球体施加一个向上的力,这个力比重力大,因此小球会向上运动。也就是说,当玩家按下鼠标左键以后,小球会向上运动。但是小球向上运动的范围是有限的,达到了这个限度以后,就不会再继续上升了,如图5-8所示。

图5-8  游戏示例运行效果判断玩家的选择最常用的判断语句——ifC#游戏开发快速入门大学霸

Comments are closed.