Nanashi-softプログラマ専用Unityでゲーム開発


◇Unityでゲーム開発 -JavaScriptでキー入力-

コントローラー機能があるのですが,そういうのを使わずに自力で制御する方法です
うまく書けば,パソコンとAndroidとiOSで共通化できると思います

入力機器の設定は,メニューの Edit→Project Settings→Inputにあります

●入力を受け付ける場所を作る

メニューの GameObject→Create Emptyを選択
Hierarchyに GameObjectが追加されるので,軽く左クリックして controllerとでもオブジェクト名を付けます

メニューの Assets→Create→Javascriptを選択
Projectに NewBehaviourScriptが追加されるので,軽く左クリックして controllerScriptとでもファイル名を付けます

Projectの controllerScriptを,Hierarchyの にドラッグ&ドロップ
そうすると,controllerの Inspectorに controllerScriptがセットされ,スクリプトが実行されるようになります

更に,一番最初に処理されるようにします(処理優先順指定はUnity3.4からの機能)
メニュー→Edit→Project Settings→Script Execution Orderを選択
右下の+ボタンをクリックして,controllerScriptをクリック
リストの上に来るスクリプトが先に処理されるようになります
これを使用する場合は,全スクリプトを追加しないと意味が無いと思います

●キーボード入力を取得

function Update() {
	if(Input.GetKeyDown(KeyCode.UpArrow)){
		//上キーを押した
	}
	if(Input.GetKey(KeyCode.UpArrow){
		//上キーを押し続けている
	}
	if(Input.GetKeyUp(KeyCode.UpArrow)){
		//上キーを離した
	}
}
主なキーコード
KeyCode.UpArrow : ↑キー
KeyCode.DownArrow : ↓キー
KeyCode.LeftArrow : ←キー
KeyCode.RightArrow : →キー
KeyCode.Return : Enter/returnキー

テンキーの場合
KeyCode.Keypad8 : 8キー(上移動)
KeyCode.Keypad2 : 2キー(下移動)
KeyCode.Keypad4 : 4キー(左移動)
KeyCode.Keypad6 : 6キー(右移動)
KeyCode.KeypadEnter : Enter/returnキー(テンキーの右下にあるキー)
※プログラマーなら当たり前の話ですが,キーボードとテンキーは異なる機器ですので,キーコードが異なります。どの部分がテンキーかわからない人 は,ノートパソコン用のテンキーパッドを見て下さい

●マウス入力を取得

function Update() {
	if(Input.GetMouseButtonDown(0)){
		//マウスの左ボタンを押した
	}
	if(Input.GetMouseButton(0)){
		//マウスの左ボタンを押し続けている
	}
	if(Input.GetMouseButtonUp(0)){
		//マウスの左ボタンを離した
	}
}
・カーソル位置取得
var x : int = Input.mousePosition.x;
var y : int = Input.mousePosition.y;
左下隅を(0,0)としたドット数が返る

●タッチパネル/ペン入力取得

画面に触れることを,指で操作する機器はタッチ,ペンで操作する機器はタップと言います
二本指で操作することをマルチタッチと呼びますが,ペン二本はありません

ここでは,指は1本で操作する事を前提とします
携帯(スマホ)は片手で親指で操作すると昔から決まっています(決め付けw)

function Update() {
	if(0 < Input.touchCount){
		if(Input.GetTouch(0).phase == TouchPhase.Began){
			//タッチ/タップした
		}
		if(Input.GetTouch(0).phase == TouchPhase.Moved){
			//タッチ/タップしたまま動かした
		}
		if(Input.GetTouch(0).phase == TouchPhase.Ended){
			//タッチ/タップを離した
		}
	}
}
・タッチ/タップ位置取得
var x : int = Input.GetTouch(0).position.x;
var y : int = Input.GetTouch(0).position.y;
左下隅を(0,0)としたドット数が返る

※タッチパネルが無い機種で値を取得しようとするとエラーになります
そこで,最初に Input.touchCountでデータの有無を調べています


TOPプログラマ専用Unityでゲーム開発

Melonbooks DL