当前位置:嗨网首页>书籍在线阅读

21-设置玩家飞船的最大速度

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.8.3 设置玩家飞船的最大速度

运行例8-8将会发现以下两个问题。

(1)飞船飞出屏幕的边界后将会消失。

(2)飞船没有最大速度。

在编写完整的游戏代码时,需要先解决第一个问题。现在,先来看如何在当前的运动代码中限制最大速度。假设规定玩家飞船的最大速度是每帧移动2像素。如果仅沿4个基本方向(上、下、左、右)移动,那么当前速度非常容易计算。当左右移动时,movingY的值永远是0。如果上下移动,那么movingX的值永远是0。在一个轴上的运动速度非常容易与最大速度做比较。

但是在这个游戏中,大多数情况都是在x轴方向和y轴方向同时运动。为了计算当前速度并将它与最大速度做比较,需要多做一些数学运算。

首先,假设在游戏中增加一个最大速度变量。

var maxVelocity = 2;

接下来,必须确保在计算新的movingX值和movingY值之前,将当前速度与最大速度做比较。在应用新的movingX和movingY的值之前,用局部变量将它们保存起来。

var movingXNew = movingX+thrustAcceleration*facingX;
var movingYNew = movingY+thrustAcceleration*facingY;

飞船的当前速度是movingX^2 + movingY^2的平方根。

var currentVelocity = Math.sqrt ((movingXNew*movingXNew)+ (movingXNew*movingXNew));

如果当前速度小于最大速度,就设置movingX和movingY的值。

if (currentVelocity < maxVelocity){
  movingX = movingXNew;
  movingY = movingYNew;
}