libgdx:[43]6 添加演员

2024-11-13 13:29:18

本章主要介绍游戏中演员的添加。

工具/原料

libgdx

Adding the Actors 添加演员

1、这一章中我们将要实现剩下的在我们游戏世界中充当演员的游戏对象。有我们的玩家角色-兔子头图片和所有的可收集的物品;金币和羽毛。我们还将在level加载器中实现我们的游戏对象来完成我们的level加载器,以便在level被加载后可以适当的管理游戏对象。

2、我们还将使用一个简单的物理模拟来扩展游戏特性,他允许所有的游戏对象拥有一些物理特性比如速度、加速度、和摩擦力。另外游戏还要支持碰撞检测来触法某一个特定的事件。例如我们需要游戏玩家可以跳跃站立或者在石头上奔跑,当接触某个游戏对像是收集它,或者在落水是丢失一条性命。游戏的代码还有包括检测游戏结束的条件是否已经达到,如果达到游戏结束的条件,游戏应该马上结束,并且弹出Game Over字样。

libgdx:[43]6 添加演员

3、GUI在游戏中的羽毛对象被收集时将会绘制一个小的羽毛图标。还会有一个数字显示在羽毛图标的旁边来显示收集羽毛之后带来的升高(游戏玩家可以通过连续跳跃在空中飞行)的效果还有多久结束。

libgdx:[43]6 添加演员

Implementing the actor game objects 实现游戏演员对象

1、首先我们通过添加一些另外的属性来和物理机能以及收集物品的检测代码来扩展AbstractGameObject类来做一些准备工作。在AbstractGameObject添加如下导入代码:import com.badlogic.gdx.math.Rectangle;

libgdx:[43]6 添加演员

2、然后添加下面的成员变量和初始化代码到同一个类中:。。。 。。。

libgdx:[43]6 添加演员

3、The following list contains a brief description of the purposeof each variable:下面的列表是一个对于每个变量的目的的一个简明的描述。• velocity: 当前的游戏玩家速度——— m/s.• terminalVelocity: 玩家的正负最大速度—— m/s.• friction: 反向作用力用来降低玩家速度,直到玩家的速度为0为止。这个值作为一个无因次的(不具因次的物理量称为无因次量,就是纯数,如圆周率π、雷诺数Re等。)系数被给出。如果这个值为0这表示没有摩擦力,因此对象的速度将不会减小。• acceleration: 对象的常量加速度—— m/s².• bounds: 对象的轮廓盒子()用于和其他对对象之间的碰撞检测。轮廓盒子可以被设置成任意的尺寸,他完全有游戏世界中的对象的尺寸决定。

libgdx:[43]6 添加演员

4、我们现在将使用velocity, terminalVelocity, friction, 和acceleration.属性添加一些简单的物理模拟。把下面的导入代码添加到 AbstractGameObject:import com.badlogic.gdx.math.MathUtils;另外在同一个类中添加如下代码:。。。 。。。

libgdx:[43]6 添加演员

5、最后在已经存在的 update()方法中实现如下代码的改变:。。。 。。。

libgdx:[43]6 添加演员

6、两个新的方法:updateMotionX()和 updateMotionY()将会在每一个update周期中被调用用来根据给定的delta time计算游戏对象在X和Y上的速度。这个计算分三步完成:1.如果游戏对象的速度不是0,游戏对象肯定是在运动。所以摩擦里应该起作用来降低对对象的速度。由于摩擦力的目的是用来降低速率,所以它可以从正速度中减去,或者在负速度上加上一个数值。当代数标记完全停止时(意思就是当对象的速度由于摩擦里降低到0时)立刻使用Math.max和Math.min函数直接把速率设置为0.2. 然后加速度作用于当前速率.3. 最后,确保新的速率一直在正负速率的最大范围之内.

7、在速率的两个组成部分都被跟新后,通过添加一个新的速率矢量到上一个点的矢量上实现对对象真实运动的模拟。

猜你喜欢