1 FL 教程Flash 設計賽車游戲教程 周四 3月 03, 2011 7:15 pm
Admin
Admin
賽車游戲我們總是碰到!今天給大家簡單講解一下。
先測試效果:
點擊這里下載源文件
首先新建立一個賽車影片剪輯,由6個圖層組成一個基本的賽車。放到舞臺上的時候命名實例名為car1。
然后根據上面的車,設計一個賽車陰影影片剪輯。拖放到舞臺上的時候命名實例名為shadow1。
然后建立一個新的空的影片剪輯。拖放到舞臺上的時候命名實例名stepper。
然后選中該空影片剪輯輸入下面代碼:
onClipEvent(load){
speed1 = 0;
}
onClipEvent(enterFrame){
_root.step(1);
}
然后新建立一個層Action,輸入下面代碼:
function step(who) {
//check to see if the car in question is controlled by the player or by the computer
if (_root["car" who].code == "player") {
//we will constantly decrease speed by multiplying it with a number below 1
if (this["speed" who]>0.3) {
this["speed" who] *= _root.speedDecay;
} else {
this["speed" who] = 0;
}
//the car will react to certain keys
//accelerate
if (Key.isDown(Key.UP) && this["speed" who]<_root.maxSpeed) {
this["speed" who] = _root.acceleration;
}
//brake (reverse)
if (Key.isDown(Key.DOWN)) {
this["speed" who] -= _root.backSpeed;
}
//steer left
if (Key.isDown(Key.LEFT) && this["speed" who]>0.3) {
_root["car" who]._rotation -= _root.rotationStep*(this["speed" who]/_root.maxSpeed);
}
//steer right
if (Key.isDown(Key.RIGHT) && this["speed" who]>0.3) {
_root["car" who]._rotation = _root.rotationStep*(this["speed" who]/_root.maxSpeed);
}
this["rotation" who] = _root["car" who]._rotation;
//we calculate the two components of speed (X axis and Y axis)
this["speedx" who] = Math.sin(this["rotation" who]*(Math.PI/180))*this["speed" who];
this["speedy" who] = Math.cos(this["rotation" who]*(Math.PI/180))*this["speed" who]*-1;
//apply the components on the actual position of the car
_root["car" who]._x = this["speedx" who];
_root["car" who]._y = this["speedy" who];
//position the shadow of the car
_root["shadow" who]._x = _root["car" who]._x-4;
_root["shadow" who]._y = _root["car" who]._y 2;
_root["shadow" who]._rotation = _root["car" who]._rotation;
}
if (_root["car" who].code == "computer") {
}
}
然后再建立一個層,輸入下面代碼(用于初始化變量)
car1.code = "player";
acceleration = 0.4;
speedDecay = 0.96;
rotationStep = 10;
maxSpeed = 10;
backSpeed = 1; 測試了!今天快下班了!!明天接著給大家把這個游戲弄的更加完整!后面還有兩個步驟,大家通過測試上面的動畫會發現車沒有場地限制!之后我們將給它限定一定的路線。期望!]
先測試效果:
點擊這里下載源文件
首先新建立一個賽車影片剪輯,由6個圖層組成一個基本的賽車。放到舞臺上的時候命名實例名為car1。
然后根據上面的車,設計一個賽車陰影影片剪輯。拖放到舞臺上的時候命名實例名為shadow1。
然后建立一個新的空的影片剪輯。拖放到舞臺上的時候命名實例名stepper。
然后選中該空影片剪輯輸入下面代碼:
onClipEvent(load){
speed1 = 0;
}
onClipEvent(enterFrame){
_root.step(1);
}
然后新建立一個層Action,輸入下面代碼:
function step(who) {
//check to see if the car in question is controlled by the player or by the computer
if (_root["car" who].code == "player") {
//we will constantly decrease speed by multiplying it with a number below 1
if (this["speed" who]>0.3) {
this["speed" who] *= _root.speedDecay;
} else {
this["speed" who] = 0;
}
//the car will react to certain keys
//accelerate
if (Key.isDown(Key.UP) && this["speed" who]<_root.maxSpeed) {
this["speed" who] = _root.acceleration;
}
//brake (reverse)
if (Key.isDown(Key.DOWN)) {
this["speed" who] -= _root.backSpeed;
}
//steer left
if (Key.isDown(Key.LEFT) && this["speed" who]>0.3) {
_root["car" who]._rotation -= _root.rotationStep*(this["speed" who]/_root.maxSpeed);
}
//steer right
if (Key.isDown(Key.RIGHT) && this["speed" who]>0.3) {
_root["car" who]._rotation = _root.rotationStep*(this["speed" who]/_root.maxSpeed);
}
this["rotation" who] = _root["car" who]._rotation;
//we calculate the two components of speed (X axis and Y axis)
this["speedx" who] = Math.sin(this["rotation" who]*(Math.PI/180))*this["speed" who];
this["speedy" who] = Math.cos(this["rotation" who]*(Math.PI/180))*this["speed" who]*-1;
//apply the components on the actual position of the car
_root["car" who]._x = this["speedx" who];
_root["car" who]._y = this["speedy" who];
//position the shadow of the car
_root["shadow" who]._x = _root["car" who]._x-4;
_root["shadow" who]._y = _root["car" who]._y 2;
_root["shadow" who]._rotation = _root["car" who]._rotation;
}
if (_root["car" who].code == "computer") {
}
}
然后再建立一個層,輸入下面代碼(用于初始化變量)
car1.code = "player";
acceleration = 0.4;
speedDecay = 0.96;
rotationStep = 10;
maxSpeed = 10;
backSpeed = 1; 測試了!今天快下班了!!明天接著給大家把這個游戲弄的更加完整!后面還有兩個步驟,大家通過測試上面的動畫會發現車沒有場地限制!之后我們將給它限定一定的路線。期望!]