概要 | サンプル「ダンジョン1.pfl」の動きの制御 |
---|---|
投稿者 | Parafla Quality |
状態 | |
カテゴリー | ActionScript |
投稿日 | 2012-02-06 (月) 19:09:55 |
バージョン | 1.39 |
サンプルpfl.の「ダンジョン1.pfl」を使ってRPG風のゲームを作っているのですが、今のままではキャラクターが高速移動し、斜め移動なども出来てしまいます。 もっと移動をゆっくりにして、斜め移動も出来なくするにはどうすればよいのでしょうか。
キャラクターの移動を処理するスクリプトは以下です。
//━━━━━プレイヤーのキャラを置く this.attachMovie("hito","player",20000); player._x = mp[12][12]._x; //マップ上のplayerのx座 標、通路のどこかと同じにする player._y = mp[12][12]._y; //同じくy座標 onEnterFrame = function(){ //━━━━━マップのスクロール this._x = (player._x * -1)+140; //140の部分がplayerのメイン座標のx座標に相当する(要するに表示位置) this._y = (player._y * -1)+180; //180は、同じくy座標 //━━━━━キーボード操作 cx = player._x/size; //これで、playerの位置はhaiti[cx][cy]と同じいうことになる cy = player._y/size; // if(_root.onoff == 1){ if(haiti[cy-1][cx] != 2){ //上が壁のとき上に行けない if (Key.isDown(Key.UP)){player._y -= size;} } if(haiti[cy+1][cx] != 2){ //同じく下 if (Key.isDown(Key.DOWN)){player._y += size;} } if(haiti[cy][cx-1] != 2){ //同じく左 if (Key.isDown(Key.LEFT)){player._x -= size;} } if(haiti[cy][cx+1] != 2){ //同じく右 if (Key.isDown(Key.RIGHT)){player._x += size;} } if (haiti[cy][cx] == 3 && Key.isDown(Key.DOWN)) {_root.gotoAndPlay("罠");} //罠 if (haiti[cy][cx] == 4 && Key.isDown(Key.UP)) {_root.gotoAndPlay("アイテム");} //アイテム if (cy == 4 && cx == 1 && Key.isDown(Key.LEFT)){_root.gotoAndPlay("アイテム");} if (cy == 4 && cx == 19) {_root.gotoAndPlay("脱出");} //マップ上の位置を指定してもよい } };
if(_root.onoff == 1){ if(haiti[cy-1][cx] != 2){ //上が壁のとき上に行けない if (Key.isDown(Key.UP)){player._y -= size; _root.onoff = 0; } } 〜以下同様だがifをelse ifにした方がよいかもさらにクリップアクションに
- onClipEvent(keyUp){_root.onoff = 1;}を加える -- 2012-02-08 (水) 12:38:48
onKeyUp=function(){_root.onoff = 1;};というように書きます -- 2012-02-09 (木) 08:25:20