Raycastを斜め方向に出して、接触判定をつくってみましょう。
斜め45度へRaycastの線を可視化。
3倍の大きさのCubeにRaycastが触れると、Sphereも3倍のサイズになります。
関連記事:
向いている方向へRaycastを出す
左右にRaycastの接触判定をつくる
Raycastによる接地判定
Rayの始点をマイナスにする
Rayを当てた状態でキーを押せば削除
角度をつけてRaycastを出す
Sphereを作成します。
Cubeを作成し、右斜め上に配置。
サイズを3倍の大きさにします。
ゲームビューではこのように見えています。
SphereRay.csを作成し、Sphereに追加します。
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereRay : MonoBehaviour { private float rayDistance; void Start() { rayDistance = 3.0f; } void Update() { //Raycastを斜め方向へ出す Vector3 rayPosition = transform.position + new Vector3(0, 0, 0); Ray ray = new Ray(rayPosition, new Vector3(1, 1, 0)); Debug.DrawRay(rayPosition, ray.direction * rayDistance, Color.red); //Rayに触れたオブジェクトと同じサイズにする RaycastHit hit; if (Physics.Raycast(ray, out hit, rayDistance)) { if (hit.collider.name == "Cube") { this.transform.localScale = hit.collider.gameObject.transform.localScale; } } //十字キー操作 if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(-0.05f, 0f, 0f); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(0.05f, 0f, 0f); } if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(0f, 0f, 0.05f); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(0f, 0f, -0.05f); } } } |
ゲームプレイして、シーンビューを確認します。
長さ3、斜め方向(45°)の角度でRayが表示されています。
Debug.DrawRayによって、Rayを可視化しています。
Debug.DrawRay( Rayの開始位置, Rayの向きと長さ, ラインの色, ラインの表示時間);
CubeにRayが触れると、Sphereが3倍の大きさに変わります。
関連記事:
向いている方向へRaycastを出す
左右にRaycastの接触判定をつくる
Raycastによる接地判定
Rayの始点をマイナスにする
Rayを当てた状態でキーを押せば削除