こんにちは、今日はゲームを作っています。
シムシティのようなシミュレーションゲームなどでマウスを使って建物を設置したい時はありませんか?
今回はUnity でどのように行うかを解説します。
やりたいこと
画面をタップして初めてオブジェクトとあたった地点がほしい
コード
using UnityEngine; /*諸々省略*/ Camera mainCamera = /*使用するカメラを指定*/ var ray = mainCamera.ScreenPointToRay(Input.mousePosition); RaycastHit Hit; if (Physics.Raycast(ray, out Hit)) { Debug.Log(Hit.point); }
概要
- マウスでタッチした位置にカメラからのレイを飛ばす
- レイは光線のようなもので3D空間内の直線と考えてください。
- ヒットしていればその地点の座標を表示する
登場人物
Camera.ScreenPointToRay
カメラから指定地点までのレイを作成します。
docs.unity3d.com
Physics.Raycast
レイとGameObjectの当たり判定を行う
docs.unity3d.com
RaycastHit
Physics.Raycast の結果を格納する。よく使う変数の紹介をします
- point :あたった地点
- distance : レイの原点(今回はカメラ位置)までの距離
- transform:あたったコライダーの Transform
まとめ
Unity では簡単に画面タップ処理がかけていいですね。レイの当たり判定を手書きしようとすると計算量の問題とあたり判定の複雑さで死にそうになります。