球体のRaycast(光線)を作って飛ばしてみましょう。
通常のRayは線状になっていますが、球の形にすることで、光線に幅と高さを出すことができます。
今回の例では、右方向に向けて半径1.0のRayを出してみます。
Rayを可視化し、X座標5.0の位置に球状Rayが確認できますが、そこへ向けた通過範囲も、当たり判定として作用します。
関連記事:
箱形のRaycastを作る
向いている方向へRaycastを出す
Raycastによる接地判定
左右にRaycastの接触判定をつくる
Raycastの照準に当たれば色が変わる
Raycastによる特定オブジェクトの接触判定
オブジェクトに向けてRaycastを出し続ける
球状のRayを飛ばす
CubeをSphereを作成します。
プレーヤーであるSphereの位置を変えます。
RayScript.csを作成し、Cubeに追加します。
RayScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class RayScript : MonoBehaviour { void Update () { RaycastHit hit; if(Physics.SphereCast(transform.position, 1.0f, transform.right, out hit, 5.0f,LayerMask.GetMask("Default"))) { Debug.Log(hit.collider.name); } //球状のRayまでの距離を可視化 Debug.DrawRay(transform.position, transform.right * 5.0f, Color.red); } //球状のRayを可視化 void OnDrawGizmos() { Gizmos.color = Color.red; Gizmos.DrawWireSphere(transform.position + transform.right * 5.0f, 1.0f); } } |
ここで一度、プレイを押してみましょう。
真横からシーンビューを見れば、このように球形のRaycastが、赤線で確認できます。
また、Cubeから球形Rayまでの距離も、赤線で確認できます。
Physics.SphereCast(球形が通過を開始する地点の中心, 球の半径, 球を通過させる方向, hitしたオブジェクトの情報, Raycastの最大の長さ, レイヤーマスク);
DrawWireSphere(球形Rayの中心位置, 球形Rayの半径);
プレーヤーを動かして当たり判定を確認
続いて、Sphere(プレーヤー)のスクリプトを作成しましょう。
SphereMove.csを作成し、Sphereに追加します。
SphereMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereMove : MonoBehaviour { private float speed; void Start() { speed = 1.0f; } void Update() { if (Input.GetKey (KeyCode.UpArrow)) { transform.position += transform.up * speed * Time.deltaTime; } if (Input.GetKey (KeyCode.DownArrow)) { transform.position -= transform.up * speed * Time.deltaTime; } if (Input.GetKey(KeyCode.RightArrow)) { transform.position += transform.right * speed * Time.deltaTime; } if (Input.GetKey (KeyCode.LeftArrow)) { transform.position -= transform.right * speed * Time.deltaTime; } } } |
シーンビューで当たり判定を確認しましょう。
ゲームプレイし、Sphereを操作。
球状Rayに触れてみると、コンソールにSphereが表示されます。
また、Cubeオブジェクトを起点として、球状のRayが飛んでいるため、Rayの通過エリアに触れても、当たり判定としてコンソールにSphereが表示されます。
関連記事:
箱形のRaycastを作る
向いている方向へRaycastを出す
Raycastによる接地判定
左右にRaycastの接触判定をつくる
Raycastの照準に当たれば色が変わる
Raycastによる特定オブジェクトの接触判定
オブジェクトに向けてRaycastを出し続ける