質問ページ4 / 139


質問ページ4 / 139

質問ページ4/139

概要サンプル「ダンジョン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("脱出");}			//マップ上の位置を指定してもよい
	}
	};

回答

  • FPSを小さくしてみてください -- 2012-02-06 (月) 20:43:31
  • FPSを小さくしても斜め移動が出来てしまいます・・・ -- 2012-02-07 (火) 21:35:04
  • それはいつものフラグ立てでおk
    	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
  • 初心者ですみません・・・onClipEvent?(keyUp){_root.onoff = 1;}はどこに追加すればよいのでしょうか? -- 2012-02-08 (水) 21:29:47
  • ダンジョンの入ったスプライトのクリップアクションでいいと思いますが
    フレームアクションに書きたいのなら
    onKeyUp=function(){_root.onoff = 1;};
    というように書きます -- 2012-02-09 (木) 08:25:20
  • 有難うございます!移動を制御することが出来ました! -- 2012-02-10 (金) 20:23:23