I have a game where player moves forward over (semi)random tiles. I want a hittest for when the player hits a certain tile.
However when the char hits one of the spawned in floor2's nothing happens.
I think this is because there are multiple 'floor2' movieclips on the stage ?
When i trace the bounds "getBounds" for floor2 the positions it shows keeps changing anyway to Hitest with all of them ?
function handleCollision( e:Event ):void {
if(char.hitTestObject(floor2)){
trace("hit detected");
}
This is how the player spawns in:
var char:Char = new Char();
char.x = 275;
char.y = 786;
cam.addChild(char);
This is how floor2 spawns in :
if (randomRounded > 10 && randomRounded <= 50 ){
floor2 = new Floor2();
floor2.x = -8.45;
floor2.y = 786 - tileCounter;
cam.addChildAt(floor2, stage.numChildren-1);
Extra : ( RandomRounded is a randomly generated number ), ( there is a 'Var floor2:Floor2;')
please help :(
A variable can only ever reference up to one value. So your
floor2
variable can only reference oneFloor2
object. If you assign a new value, the variable will reference that value.What you should do is to use an
Array
, which can hold many objects.In your function
handleCollision
you would then iterate over the array to test each individual floor object. Here's a quick untested example of how that could look like: