我正在创建一个简单的滑块射击游戏,其中有随机衍生的敌人和一个可玩的角色。如果这两个对象中的一个相互碰撞,那么我希望它们被销毁。然后我的最后一场比赛在屏幕上显示最终得分。我知道这涉及命令hitTestPoint
,但我不知道如何实现它。我的两个对象都是在不同类中的影片剪辑。可玩角色被称为PlayerFront
,其实例被称为PlayerFrontOne
,而敌对象被称为EnemyScout
,但在舞台上没有它的实例,因为它在游戏过程中随机生成。我到目前为止的代码是:
public function PlayerFront()
{
stage.addEventListener (Event.ENTER_FRAME, collision);
}
function collision(evt:Event)
{
if (PlayerFront.hitTestPoint(EnemyScout, true))
{
score = score + 1;
trace(score);
}
}
我一直在犯错,但无法解决原因。
答案 0 :(得分:0)
例如:
var enemy : EnemyScout = new EnemyScout();
public function PlayerFront() {
stage.addEventListener (Event.ENTER_FRAME, collision);
}
function collision(evt:Event) {
if (PlayerFront.hitTestObject(enemy)) { //here you need to test with EnemyScout instance
score = score + 1;
trace(score);
}
}
如果你有很多EnemyScout实例,那么你需要循环抛出它们并检查每个对象的碰撞。
类似的东西:
你可以用enemys创建一个数组
var enemy_arr : Array = [];
每当你创建一个enemey时,你会将它推送到你的数组
var enemy : EnemyScout = new EnemyScout();
enemy_arr.push(enemy);
现在你可以像这样循环抛出你的敌人阵列:
...
function collision(evt:Event) {
if (areHittingEnemy()) { //here you need to test with EnemyScout instance
score = score + 1;
trace(score);
}
}
function areHittingEnemy() : Boolean {
for each(var e in enemy_arr){
if(PlayerFront.hitTestObject(e)){
//if you want you cand remove this enemy from array
return true;
}
}
return false;
}
希望这会有所帮助。一切顺利!