好的,我的xChar.character是我的角色movieclip,xMap是构建地图的类的实例。
从xMap我添加使用函数内部变量从图像切片的movieclip。我做addChild(cell1);对于我的地图上显示的数组中的每个对象。
但是我可以使用的xMap类中唯一的公共变量是sliceObject,它是一个线性数组,包含来自movieclip的所有切片图像(此图像包含我希望角色与之碰撞的所有对象)。
所以我试着这样做:
package as3
{
public class wl_CollisionDetection
{
var tChar;
var tMap;
public var _CheckCollision:Boolean;
public function wl_CollisionDetection(xChar:wl_Character,xMap:wl_MapBuilder)
{
tChar = xChar;
tMap = xMap;
}
public function CheckCollision()
{
_CheckCollision = false;
if (tChar.character.hitTestObject(tMap.sliceObject[70]))
{
_CheckCollision = true;
trace("Collision detected!");
return;
}
else
{
_CheckCollision = false;
trace("No collision");
return;
}
_CheckCollision = false;
}
}
}
我得到的只是无碰撞痕迹。
if (tChar.character.hitTestObject(tMap.sliceObject[70]))
我做错了什么?
答案 0 :(得分:0)
也许您的问题来自于您正在测试地图中只有一个对象的碰撞。
尝试使用循环:
package as3
{
public class wl_CollisionDetection
{
private var tChar:wl_Character;
private var tMap:wl_MapBuilder;
public function wl_CollisionDetection(xChar:wl_Character,xMap:wl_MapBuilder)
{
tChar = xChar;
tMap = xMap;
}
public function checkCollision():Boolean
{
var numObject:int = tMap.sliceObject.length;
for (var i:int = 0; i < numObject; i++)
{
if (tChar.character.hitTestObject(tMap.sliceObject[i]))
{
trace("Collision detected!");
return true;
}
}
trace("No collision");
return false;
}
}
}