Slash Games
JapaneseEnglishKoreanShmplified ChineseTraditional Chinese
     
トップ
読み物
カレンダー
Other languages


■ 2)「マウスポインタで位置を指定」する方法

マウスポインタのドラッグアンドドロップ操作で位置を指定する

 マウスは移動方向よりも位置を指し示すことに適している。
 つまり、画面上の何かをダイレクトに指し示したり、何かをつかんで別の位置に移動させる場合に適している。
 たとえば、指アイコンを操作して、普段のマウス操作と同様に、クリックやドラッグで、指定したり、つかんだりする直感的な操作が、この方法の代表例だろう。
気になる部分をクリックして進めていくアドベンチャーゲーム、トランプゲーム、コマを指定するタイプのパズルゲームなどに使われる。
 自由な方向に、自由な速度で移動させることができることが、この操作方法の利点だ。
 もしくは、キャラクタが一瞬にして移動していい場合(たとえばブロック崩し)も、この操作方法を検討する価値があるだろう。
 逆に、位置をダイレクトに指定できる自由さのために、アクションゲームなどには向かない。自分の分身のキャラクタを制限の中で移動させることが重要な場合は、自由さが逆に問題になる。プレイヤはキャラクタの移動をコントロールするのではなく、位置を示す感覚になるからだ。

 以下のタイプに当てはまる場合は、この操作性を検討すべきだろう。

  • 位置をダイレクトに操作したい
  • ポインタ(キャラクタ自身)が一定の移動速度を持つ必要がない
  • プレイヤの注意を指定位置に持っていきたい
  • 自由な方向に、自由な速度で移動させたい
  • 多数のコマンドを指定することがある

    例)アドベンチャーゲーム・ブロック崩し

米光:マウスでつかんで運ぶタイプ。
荻原:キャラクタのオブジェクトのタイムライン上に次のActionScriptを書くだけです。

this.onPress = function(){
    this.startDrag();
}

this.onRelease = function(){
    this.stopDrag();
}
this.onReleaseOutside = function(){
    this.stopDrag();
}

米光:シンプルですね。
荻原:オブジェクト(this)上でマウスが押されてる(onPress)ときのファンクション内で、this.startDrag();だから、オブジェクトのドラックを開始。
米光:逆にマウスボタンを離した(onRelease)時は、this.stopDrag();でオブジェクトのドラックを停止。
荻原:シンプルです。
米光:最後のthis.onReleaseOutsideは?
荻原:これは、オブジェクト(this)上ではない場所でマウスを離した時の処理です。onReleaseと合わせることで、画面上のどこでマウスを離してもドラッグが終了するようにしてあります。


■ 3)「マウスポインタで向かう位置を指定」する方法

マウスポインタで向かう位置を指定する。ポインタを動かすと、ポインタに向かってキャラクタが移動する

 マウスポインタでキャラクタの向かう位置を指定する操作方法。
 つまりキャラクタはマウスポインタを目指して移動するが、即座にマウスポインタの位置に移動するわけではない。あくまでもマウスポインタは目指す位置であり、キャラクタは自分の速度を持って、そこに(マウスポインタより)ゆっくりと移動する。
 移動位置を指定するときに、プレイヤの視点がキャラクタから離れるため、キャラクタではなく、キャラクタが向かう場所に注意が向かう。
 「手に入れたい宝箱にマウスポインタを持っていって移動位置を決める」など、移動位置にプレイヤの視点を持っていきたいゲーム(たとえばMMORPGなど)の操作に向く。
  • キャラクタの移動位置を示したい
  • 移動位置の指定は自由にさせたい
  • キャラクタ自身が一定の移動速度を持つ
  • プレイヤの注意を移動位置に持っていきたい
  • 多数のコマンドを指定することがある

    例)MMORPG

米光:マウスポインタで向かう位置を指定するタイプ。
荻原:キャラクタのオブジェクトのタイムライン上に次のActionScriptを書くだけでOKですよ。

this.onEnterFrame = function() {
    saX = _root._xmouse-this._x;
    saY = _root._ymouse-this._y;
    if(saX > 2){
        _x += 2;
        _xscale = -100;
    }else if(saX < -2) {
        _x -= 2;
        _xscale = 100;
    }
    if(saY > 2){
        _y += 2;
    }else if(saY < -2){
        _y -= 2;
    }
};

米光:saXが、マウスのx座標とオブジェクト位置のx座標の差。saYが、マウスのy座標とオブジェクト位置のy座標の差ですね。
荻原:そう。その差が2以上なら、それぞれの方向に移動させてやるわけです。あとは、最初の「矢印キーで操作するタイプ」と同じですね。


BACK PAGE TOP NEXT
新着ニュース
記事一覧へ
Weeklyアンケート
あなたはiPhoneを買いますか?
買う

買わない

わからない

その他


現在の状況 過去の結果を見る
リリースRSSによる配信についてバナー広告問い合わせ会社概要プライバシーポリシーリンクについて
RBB TODAY RESONSE e-nenpi.com cbook24.com DOKOYO MONO ONLINE
本サイトの内容は、著作権による保護を受けています。 Copyright (c) 1998-2006 IRI Commerce and Technology, Inc. All Rights Reserved.
IRI Commerce and Technology, Inc.