0
我正在製作一款遊戲,您作爲玩家拿着棒球棒,當您點擊按鈕時揮動蝙蝠。當你揮動你的蝙蝠時,你擊中了敵人,敵人就會像擊打高爾夫球那樣向相反的方向飛去。我已經完成了移動和攻擊功能的工作,但是我怎麼才能註冊命中,所以它在面對敵人時會擊中敵人並且敵人會返回。這是我迄今所做的:我該如何獲得此次測試的成果
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.ui.Keyboard;
public class Player extends MovieClip
{
var walkSpeed:Number = 4;
var walkRight:Boolean = false;
var walkLeft:Boolean = false;
var walkUp:Boolean = false;
var walkDown:Boolean = false;
var attacking:Boolean = false;
public function Player()
{
stage.addEventListener(KeyboardEvent.KEY_DOWN , walk);
addEventListener(Event.ENTER_FRAME, Update);
stage.addEventListener(KeyboardEvent.KEY_UP, stopWalk);
stage.addEventListener(MouseEvent.CLICK, attack);
}
function walk(event:KeyboardEvent)
{
if (event.keyCode == 68)
{
walkRight = true;
}
if (event.keyCode == 87)
{
walkUp = true;
}
if (event.keyCode == 65)
{
walkLeft = true;
}
if (event.keyCode == 83)
{
walkDown = true;
}
}
function Update(event:Event)
{
if (attacking == true)
{
walkRight = false;
walkLeft = false;
walkUp = false;
walkDown = false;
}
else if (attacking == false)
{
var dx = parent.mouseX - x;
var dy = parent.mouseY - y;
var angle = Math.atan2(dy,dx)/Math.PI * 180;
rotation = angle;
if (walkRight == true)
{
x += walkSpeed;
gotoAndStop('walk');
}
if (walkUp == true)
{
y -= walkSpeed;
gotoAndStop('walk');
}
if (walkLeft == true)
{
x -= walkSpeed;
gotoAndStop('walk');
}
if (walkDown == true)
{
y += walkSpeed;
gotoAndStop('walk');
}
}
}
function stopWalk(event:KeyboardEvent)
{
if (attacking == false)
{
if (event.keyCode == 68)
{
event.keyCode = 0;
walkRight = false;
gotoAndStop('stance');
}
if (event.keyCode == 87)
{
event.keyCode = 0;
walkUp = false;
gotoAndStop('stance');
}
if (event.keyCode == 65)
{
event.keyCode = 0;
walkLeft = false;
gotoAndStop('stance');
}
if (event.keyCode == 83)
{
event.keyCode = 0;
walkDown = false;
gotoAndStop('stance');
}
}
}
function attack(event:MouseEvent)
{
if (attacking == false)
{
attacking = true;
gotoAndStop('attack');
}
}
}
}
感謝您的回覆我正在考慮這樣做,我應該看看殭屍是否足夠接近被蝙蝠擊中(使用蝙蝠的長度作爲圓半徑),以及如果方向之間的角度角色和殭屍線在一個滑動範圍內,然後他們擊中。所以,如果殭屍的角度與玩家面對的方向相差+或 - 15度,例如他們在滑動領域。我想看看還有沒有其他更簡單的方法。 – user218130 2013-04-05 13:43:15
到目前爲止,我能夠計算半徑,但我怎樣才能得到正確的角度,所以他們在點擊區公共var angle:Number = 0; public var radius:Number = 95; var rad:Number = angle *(Math.PI/180); MovieClip(root).Zombie.x = x + radius * Math.cos(rad); MovieClip(root).Zombie.y = y + radius * Math.sin(rad); – user218130 2013-04-05 13:47:59
我沒有意識到你想讓它如此精確。恐怕我無法幫助你,因爲我還沒有做這些計算。抱歉。 – Hsenfow 2013-04-05 18:11:54