The forums have permanently moved to forum.kirupa.com. This forum will be kept around in read-only mode for archival purposes. To learn how to continue using your existing account on the new forums, check out this thread.

# Thread: Making one set of MC's move toward another

1. 23
posts
Registered User

## Making one set of MC's move toward another

I need the MC's on the left, to choose(randomly if possible) a target to the right and move towards it.

My code is:

Code:
//ALL IN ARRAY MOVE TOWARDS ONE ENEMY
var iArray:Array = [];
var kArray:Array = [];
//object 1 array
for (i=0; i<20; i++) {
newI = "i_"+i;
iArray.push(newI);
_root.attachMovie("i", newI, _root.getNextHighestDepth());
_root[newI]._x = 100+Math.round(Math.random()*30);
_root[newI]._y = Math.round(Math.random()*300);
}
//object 2 array
for (k=0; k<5; k++) {
newK = "k_"+k;
kArray.push(newK);
_root.attachMovie("k", newK, _root.getNextHighestDepth());
_root[newK]._x = 400+Math.round(Math.random()*30);
_root[newK]._y = Math.round(Math.random()*300);
}
//loops,target, move and hitT
for (l=0; l != kArray.length; l++) {
for (m=iArray.length; m != 0; m--) {
targetL = eval(kArray[l]);
targetM = eval(iArray[Math.round(Math.random()*iArray.length)]);
if (targetM == undefined) {
targetM = eval(iArray[1]);
}
targetL.onEnterFrame = function() {
//trace(targetM);
if (this._x<targetM._x) {
this._x++;
} else if (this._x>targetM._x) {
this._x--;
}
if (this._y<targetM._y) {
this._y++;
} else if (this._y>targetM._y) {
this._y--;
}
if (this.hitTest(targetM)) {
trace("HIT"+targetM);
trace(this+" vs "+targetM);
}
};
}
}
http://img236.imageshack.us/my.php?i...tkphaselh8.swf

As you can see they all go towards one, when each of them should go individually to another individual(or not), just not all to the same.

Hope someone understands...

2. Code:
if (targetM == undefined) {
targetM = eval(iArray[1]);
}

Should that be [1] or [l]
Perhaps that's why they're targetting the same man?

3. 23
posts
Registered User
I got it to work. I inserted MC's in the Arrays differently and gave each object in the array a personal target, heh. Like so, in case someone else ever needs this:

Code:
//ALL IN ARRAY MOVE TOWARDS ONE ENEMY
var iArray:Array = [];
var kArray:Array = [];
//object 1 array
for (i=0; i<5; i++) {
var newI = _root.attachMovie("i", i, _root.getNextHighestDepth());
iArray.push(newI);
iArray[i]._x = 100+Math.round(Math.random()*30);
iArray[i]._y = Math.round(Math.random()*300);
trace(iArray)
}
//object 2 array
for (k=0; k<5; k++) {
var newK = _root.attachMovie("k", k, _root.getNextHighestDepth());
kArray.push(newK);

kArray[k]._x = 400+Math.round(Math.random()*30);
kArray[k]._y = Math.round(Math.random()*300);
kArray[k].onEnterFrame = function() {
if (this._x<iArray[this.toFollow]._x) {
this._x += 2;
} else if (this._x>iArray[this.toFollow]._x) {
this._x -= 2;
}
if (this._y<iArray[this.toFollow]._y) {
this._y += 2;
} else if (this._y>iArray[this.toFollow]._y) {
this._y -= 2;
}
};
}
Cheers!