私はゲームを作っています(少なくとも試してみると)私はランダムな位置にスポーンするいくつかのエナミーを持っています。アレイ。そして、ループenterframe内の関数は、その配列内のennemiesをマップ上でランダムに移動させます。だから彼らの動きはランダムですが、それらはすべて同期しているので、同時に同じ動きのペアを作ります。私はそれらを異なる方法で動かす方法を考え出しています。少なくともランダムに遅れをとってそれらを同期させるわけではありません。それは基本的な質問かもしれませんが、私が現在理解していることを説明して説明することができるゲームを作ろうとしているので、あなたの説明とアドバイスに本当に感謝しています。ここでFlash as3:同じIAを持つ敵を別々に動かす
は(そのことについて申し訳ありません、それで私のフランス語ノートのいくつかと、私は、私はテストでそれらを説明できるようなものを覚えておく必要があります:D)私のコードです
のでennemiesはDementorsあるから、 ennemyのスプライトが異なる方向
ここに対向含まムービークリップ「DementorAllSpriteは、」ループ機能
ループのenterFrameここ//set up var Dementor and array
//duration: random number between 0 et 150
//Facing: random number arrondi en dessous, donc entre 0 et 3
var DementorTimer = 0;
var DementorDuration = Math.random() * 150;
var DementorFacing: Number = Math.floor(Math.random() * 4);
var DementorSpeed: Number = 13;
var enemies_arr:Array = [];
からコードされ
PlayContainer.addEventListener(Event.ENTER_FRAME, PlayLoop);
function PlayLoop(loopEvent:Event):void
{
addDementor();
moveDementor();
function addDementor():void
{
//max number of ennemies
if(enemies_arr.length < 20)
{
//add le dementor if conditions check
var Dementor:DementorAllSprite = new DementorAllSprite();
//positions random on a grass container
var startX:int = Math.random() * 5760;
var startY:int = Math.random() * 3600 ;
Dementor.x = startX;
Dementor.y = startY;
//add Dementor to grass container and set their transparency (they gain alpha when they hit the Player)
GrassContainer.addChild(Dementor);
Dementor.alpha=0.4;
//store the object in an array
enemies_arr.push(Dementor);
}
}
//---Mouvements Dementors---//
//Timer = 0, Duration entre 0 et 25, chaque loop rajoute 1 au timer (DementorTimer ++;)
//jusqu'a ce que le if ne match plus, puis reset
//Facing mvmt: 0= back/1= front/2= right/3= left
//Frames Dementor: 1= front/2= back/3= left/4= right
//switch = if, else if, else if, ....
function moveDementor():void
{
//check les dementors de l'array (de 0 a leur nombre)
for (var j:int = 0; j < enemies_arr.length; j++)
{
if (DementorTimer < DementorDuration)
{
switch (DementorFacing)
{
case 0 :
enemies_arr[j].y-=DementorSpeed;
enemies_arr[j].gotoAndStop(2)
break;
case 1 :
enemies_arr[j].y+=DementorSpeed;
enemies_arr[j].gotoAndStop(1)
break;
case 2 :
enemies_arr[j].x+=DementorSpeed;
enemies_arr[j].gotoAndStop(4)
break;
case 3 :
enemies_arr[j].x-=DementorSpeed;
enemies_arr[j].gotoAndStop(3)
}
DementorTimer++;
}
//reset
else
{
DementorDuration = Math.random() * 150;
DementorFacing = Math.floor(Math.random() * 4);
DementorTimer = 0;
}
}
}
}
また、私はそれらを配列に入れてから痴呆者の動きはかなり短いです(最初は1つしかなく、方向を変える前に多くのように動きましたが、位置がかなり速く変わりました。あなたの助けとあなたの注意
は、あなたの迅速な答えをありがとう、そして私の初心者のミスのためにはい申し訳ありませんが、私が学んでいます。 あなたのコードはちょっと分かりますが、非常に高度な方法で作業するようですが、後でテストで説明できるように理解しようとします。 私はそれを実行しようとしたが、私は次のようなエラーが出た。「target.direction = DList [int(DList.length * Math.random)」の「void型の値を無関係な型番号に暗黙的に変換する」 )]; ' – Ymines
@Yminesが修正されました。関数呼び出しだったはずです:** Math.random()** – Organis
すべてがうまくいきました、ありがとう!いくつかの時間があれば、ロジックや、例えば 'DHash:Object'のようなコードのいくつかの高度な部分を説明できますか?私はあなたがそれを参照するとき、それが何であるのかを漠然と理解していますが、なぜ、どのように使用するのか説明できません。しかし、あなたがそれをしなければ、あなたは私をたくさん助けてくれた神です。いい日を過ごしてください:D – Ymines