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でゲーム開発○



