Unityでゲーム制作:ゲームジャム編その1
UnityRoomさんの一週間ゲームジャムに参加してみたいと思います。
今回のお題は「跳ねる」で、製作期間は30日の20:00まで。
実は温めていたアイデアはお題に沿わなかったので
急きょ予定を変更することになりそうですが
なんとかミニゲームを一つ作ろうと思います。
これまでの最短制作時間は3日……習作コーナーのパズル。
だだだ、大丈夫だ、問題ない。
今回使えなかったアイデアはまた別の機会に。
Unityでゲーム制作:パズルRPG編その1
ツイッターの方にもあげたけど、
今はパズルRPGっぽいものを作っています。
このステータス画面は流用が利くので
ゲーム部分の完成品がどうなるかはまだ未知数でございます。
何かパズルばっかり作ってる気がするし...。
自分用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; }