Flash AS遊戲教程:人物的控制

來源:互聯網
上載者:User
教程|控制

  效果如下:(用上下左右控制走動,碰到牆會停下來,按住CTRL會跑。)

點擊這裡下載源檔案

AS如下:


var walkspeed = 1.5;//走的速度
var runspeed = 3;//跑的速度
var numOfMask = 5;//Mask的數量
block_mc._visible = false;//擋著角色運動的MC看不見
for (i=numOfMask; i>0; i--) {
eval("mask" add i)._visible = false;//讓所有MASK看不見
}
onEnterFrame = function () {
Key.isDown(Key.CONTROL) ? speed=runspeed : speed=walkspeed;//如果按下CTRL,就跑
if (Key.isDown(Key.LEFT)) {//如果按下左
Key.isDown(Key.UP) || Key.isDown(Key.DOWN) ? (character_mc._x -= 0.707*speed, xy=false) : (character_mc._x -= speed, xy=true);//同時又按下了上或者下,那就不要移動這麼大.也就是說斜走的時候,角色在X軸或者Y軸上移動要小一點.下同
}
if (Key.isDown(Key.RIGHT)) {
Key.isDown(Key.UP) || Key.isDown(Key.DOWN) ? (character_mc._x += 0.707*speed, xy=false) : (character_mc._x += speed, xy=true);
}
if (Key.isDown(Key.UP)) {
Key.isDown(Key.LEFT) || Key.isDown(Key.RIGHT) ? (character_mc._y -= 0.707*speed, xy=false) : (character_mc._y -= speed, xy=true);
}
if (Key.isDown(Key.DOWN)) {
Key.isDown(Key.LEFT) || Key.isDown(Key.RIGHT) ? (character_mc._y += 0.707*speed, xy=false) : (character_mc._y += speed, xy=true);
}
for (i=numOfMask; i>0; i--) {
if (eval("mask" add i).hitTest(character_mc) && eval("mask" add i)._y>character_mc._y) {//如果角色和MASK相碰,而且MASK在角色下邊的話,也就是說如果MASK應該擋著角色的話
bg_mc.setMask(eval("mask" add i));//那就用這個MASK擋著角色
break;//後邊的就不用想了,跳出IF
}
}
shedowLx = character_mc._x-character_mc.shedow_mc._width/2;//得到角色影子最左邊的X座標,後邊做HITTEST時要用
shedowRx = character_mc._x+character_mc.shedow_mc._width/2;//影子最右邊的X座標
shedowUy = character_mc._y-character_mc.shedow_mc._height/2;//影子最上邊的Y座標
shedowDy = character_mc._y+character_mc.shedow_mc._height/2;//影子最下邊的Y座標
shedowx = character_mc._x;//影子中心X座標
shedowy = character_mc._y;//影子中心Y座標
xy ? a=1 : a=0.8;//如果剛才是斜著走的話,反彈的速度A就是0.8,否則是1
block_mc.hitTest(shedowLx, shedowy, true) ? character_mc._x += a*speed : a=a;//如果影子的左邊碰到不能走的地方,就向右彈出一個距離,距離的大小由上一句控制,下同
block_mc.hitTest(shedowRx, shedowy, true) ? character_mc._x -= a*speed : a=a;
block_mc.hitTest(shedowx, shedowUy, true) ? character_mc._y += a*speed : a=a;
block_mc.hitTest(shedowx, shedowDy, true) ? character_mc._y -= a*speed : a=a;
};

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。