自分用Unityメモ:マウス位置を得る(3Dの場合)
マウス(あるいはタップされた位置)はInput.mousePositionで得ることが出来る。
これをスクリーン座標に変換することで画面上の位置を取得することが出来る。
Vector3 v = Camera.main.ScreenToWorldPoint(Input.mousePosition);
ただ、3Dのときは上手くいかない。
理由は、mousePositionにz軸の指定がないからみたい。
なので、変換前に入れておくと良いらしい。
Vector3 pos = Input.mousePosition;
pos.z = 10.0f;
Vector3 v = Camera.main.ScreenToWorldPoint(pos);
スクリーン座標じゃなくてワールド座標内での
特定のXZ平面上の座標を得たいという場合は、
見えない平面オブジェクトを配置しておいて
カメラからrayを飛ばし、その接触点を得るという方法もある。
というか、今回使ってるのはこっちなのダ....。
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; int layerMask = (1 << LayerMask.NameToLayer("HitPanel")); //適当なレイヤーマスクを設定するよ if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask)) { //レイが当たった位置を得るよ Vector3 pos = hit.point; }
Unityでゲーム製作:自分用メモ
■キーボードからの入力
Input.GetKey(キーコード) でキーボードからの入力を取得することが出来る。
※KeyCodeについての覚書き
KeyCode.KeypadEnter----テンキーの傍の小さい方のEnterキー
KeyCode.Return---------大きい方のEnterキーはこっち。
ほかのKeyCodeプロパティは見ればわかるので割愛。
■Buttonオブジェクトに動的に命令を追加する
ラムダ式を使うことで、
割と簡単に命令を追加することが出来る。
public Button btn;
btn.onClick.AddListener(() => OnClick用メソッド );
インスペクターから設定のときは
OnClick用のメソッドの引数は1つしか設定できないけど、
これを使えば複数渡すことが出来ます。
btn.onClick.AddListener(() => OnClickOkButton( okButton.gameObject, 1, "決定ボタンですよ") );