if(this.x>this.stage.stageWidth-80)
this.x= this.stage.stageWidth-80;
}
public function CollideWith(object:CarBase):Boolean
{
if(this.x-40<object.x+40&&
this.x+40>object.x-40&&
this.z-20<object.z+20&&
this.z+20>object.z-20)
return true;
return false;
}
}
}
(2) ComCar类的代码
ComCar类代码是用于管理计算机赛车的,该类派生于CarBase,是一个特殊的赛车类,计算机赛车这类代码设计时需要考虑的是:
A 计算机赛车需要自动思考下一步的行为动作;
B 游戏中,玩家的观察视角被固定在玩家赛车的后面,所以玩家赛车的Z轴坐标其实是不会改变的。这就需要不断地调整计算机赛车的Z轴坐标,以保持赛车之间的相对位置不改变。
ComCar类的代码如下所示:
package classes
{
import flash.display.MovieClip;
public class ComCar extends CarBase
{
private var m_nThinkingTime;
public function ComCar()
{
m_nSpeedZ=25;
m_nThinkingTime=5;
}
public function Thinking(object:CarBase)
{
m_nThinkingTime--;
if(m_nThinkingTime>0)
return;
m_nThinkingTime=5;
var R:int=(Math.random()*21)-10;
if(R<-9)
m_nSpeedX=-8;
else if(R>9)
m_nSpeedX=8;
else
m_nSpeedX=0;
m_nSpeedZ=24+int(Math.random()*20)-10;
if(this.z>object.z+200)
m_nSpeedZ=20;
if(this.z<object.z-200)
m_nSpeedZ=30;
}
override public function Logic()
{
super.Logic(); Flash CS4三维游戏设计(赛车)(13):http://www.751com.cn/jisuanji/lunwen_294.html