我正在制作简单的Flash游戏。我已经添加了与墙壁,舞台等角色的碰撞。但正如我现在所看到的,碰撞与我添加到舞台的所有对象相冲突。当我添加背景 - 角色无法移动(因为是与背景碰撞)。如何避免呢?
这是带有字符(Hero)的myCollisionList:
var myCollisionList:CollisionList = new CollisionList(Hero);
myCollisionList.addItem(stage1);
myCollisionList.addItem(stage2);
myCollisionList.addItem(stage3);
以下是将字符移动到左侧的代码的一部分。当添加背景时,我总是得到痕迹(“触摸墙!”)。怎么避免呢?
if(left){
Hero.x_speed = -walkspeed;
setDirection(1);
if(myCollisionList.checkCollisions().length > 0) { // checking if is anything in collision list
// I think here is problem, but don't know how to fix It?
if (hitTestPoint(char.x - 26, char.y+20, true)){ //checking if character touching any object (have collision with anything)
trace("Touching wall!");
Hero.x_speed = 0;
}
else {
Hero.x_speed = 8;
}}
我也试过使用HitTestObject(但如果可能,我需要使用HitTestPoint)
if (Hero.HitTestObject(stage1 || stage2 || stage3)){
.....
}
但它仅适用于第一阶段1,因为其他2不起作用。
答案 0 :(得分:0)
我猜你的主类是DisplayObject,否则是
hitTestPoint(char.x - 26, char.y+20, true)
会抛出一个错误,因为它正在测试点击它自己的点。因为我猜你的背景是这个物体的孩子,所以背景的像素与点碰撞。 尝试拨打
stage1.hitTestPoint(char.x - 26, char.y+20, true)
等...
也
if (Hero.HitTestObject(stage1 || stage2 || stage3))
不正确,我认为您正在寻找
if (Hero.HitTestObject(stage1) ||
Hero.HitTestObject(stage2) ||
Hero.HitTestObject(stage3))