Actionscript 3 我将动画添加到电影剪辑的时间轴中,现在它不再像以前那样与对象发生碰撞
我正在为Flash开发AS3平台游戏。当然有一个玩家角色和敌人让他与之互动。在编写代码时,我首先为敌人制作了一个简单的占位符图形。我用密码让敌人在两个保险杠之间来回移动。他还与玩家发生碰撞,将他们送回起始屏幕。现在我的代码已经运行了,我想给敌人添加一些动画,这样他们就可以走路了,而不仅仅是滑冰了。我将动画添加到敌人电影剪辑的时间线中。现在,当我测试游戏时,动画播放良好,敌人开始移动,但他通过第一个保险杠,根本没有与玩家发生碰撞。如果我强制电影剪辑停止而不播放,碰撞将再次开始工作。这是什么原因造成的 这是.fla文件主时间线内的代码Actionscript 3 我将动画添加到电影剪辑的时间轴中,现在它不再像以前那样与对象发生碰撞,actionscript-3,flash,animation,movie,clip,Actionscript 3,Flash,Animation,Movie,Clip,我正在为Flash开发AS3平台游戏。当然有一个玩家角色和敌人让他与之互动。在编写代码时,我首先为敌人制作了一个简单的占位符图形。我用密码让敌人在两个保险杠之间来回移动。他还与玩家发生碰撞,将他们送回起始屏幕。现在我的代码已经运行了,我想给敌人添加一些动画,这样他们就可以走路了,而不仅仅是滑冰了。我将动画添加到敌人电影剪辑的时间线中。现在,当我测试游戏时,动画播放良好,敌人开始移动,但他通过第一个保险杠,根本没有与玩家发生碰撞。如果我强制电影剪辑停止而不播放,碰撞将再次开始工作。这是什么原因造成
addEnemiesToLevel1();
addBumpersToLevel1();
function addEnemiesToLevel1():void
{
addEnemy(700, -54);
addEnemy(1341, -54);
addEnemy(2187, -54);
}
function addBumpersToLevel1():void
{
addBumper(900, -80);
addBumper(644, -80);
addBumper(1135, -90);
addBumper(1380, -90);
addBumper(2053, -90);
addBumper(2226, -90);
}
function addEnemy(xLocation:int, yLocation:int):void
{
var enemy:Enemy = new Enemy(xLocation, yLocation);
back.addChild(enemy);
enemy.addEventListener(Event.REMOVED, enemyRemoved);
enemyList.push(enemy);
}
function addBumper(xLocation:int, yLocation:int):void
{
var bumper:Bumper = new Bumper(xLocation, yLocation);
back.addChild(bumper);
bumper.visible = false;
bumperList.push(bumper);
}
//corralling the bad guys with bumpers
if (enemyList.length > 0){ //enemies left in the enemyList?
for (var k:int = 0; k < enemyList.length; k++){ // for each enemy in the enemyList
if (bumperList.length > 0){
for (var h:int = 0; h < bumperList.length; h++){ // for each bumper in the List
if ( enemyList[k].hitTestObject(bumperList[h]) ){
enemyList[k].changeDirection();
}
}
}
}
}
//player and enemy collisions
if (enemyList.length > 0){ //enemies left?
for (var m:int = 0; m < enemyList.length; m++){ // for each enemy in the enemyList
if ( enemyList[m].hitTestObject(player) ){
trace("player collided with enemy");
gotoAndStop(4);
enemyList[m].removeSelf();
}
}
}
}
我遇到了一个与此非常相似的问题: 我的问题是,在我为角色设置动画后,我的角色的生命点无法工作。然而,这不是因为动画,而是因为我的角色旋转代码。我用scaleX来翻转角色。但是,这也翻转了角色中嵌套的点,这些点用于处理我的碰撞。我注意到您还翻转了角色的比例:
public function changeDirection():void{
trace("x ="+x);
flip++;
this.scaleX *= -1;
}
也许你和我有同样的问题。如果是,请暂时删除这行代码:
this.scaleX *= -1;
…看看会发生什么…我们可以从那里知道下一步该做什么
德雷克·斯瓦齐(Drake Swartzy)去掉了刻度线,运气不好。敌人现在进行月球行走:。我使用hitTestObject而不是point来进行敌方碰撞,这会有区别吗?是的,我的错。我应该检查一下你使用的碰撞检测方法。当你为坏人制作动画时,你对代码做了什么改变?也许这将帮助我们回答这个问题。没有,代码最初是通过一个简单的静态电影剪辑实现的,并且运行良好。我所做的唯一的补充是,我在敌人电影剪辑的时间线中添加了一些帧,用于它的行走循环。奇怪……如果我发现了这个,我会通知你的
this.scaleX *= -1;