一応このスクリプトでも、できましたが多少の不具合があります
プレイヤーの頭の上にブロックが置かれてしまいます
何かいい案はありませんか?
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class BlockInstantiater : MonoBehaviour 6{ 7 8 Vector2 displayCenter; 9 10 // ブロックを設置する位置を一応リアルタイムで格納 11 private Vector3 pos; 12 13 [SerializeField] 14 private GameObject blockPrefab; 15 16 // Use this for initialization 17 void Start() 18 { 19 // ↓ 画面中央の平面座標を取得する 20 displayCenter = new Vector2(Screen.width / 2, Screen.height / 2); 21 22 Cursor.lockState = CursorLockMode.Locked; 23 } 24 25 // Update is called once per frame 26 void Update() 27 { 28 // ↓ 「カメラからのレイ」を画面中央の平面座標から飛ばす 29 Ray ray = Camera.main.ScreenPointToRay(displayCenter); 30 // ↓ 当たったオブジェクト情報を格納する変数 31 RaycastHit hit; 32 33 // ↓ Physics.Raycast() でレイを飛ばす 34 if (Physics.Raycast(ray, out hit)) 35 { 36 // ↓ 生成位置の変数の値を「ブロックの向き + ブロックの位置」 37 pos = hit.normal + hit.collider.transform.position; 38 39 // ↓ 右クリック 40 if (Input.GetMouseButtonDown(1)) 41 { 42 // 生成位置の変数の座標にブロックを生成 43 Instantiate(blockPrefab, pos, Quaternion.identity); 44 } 45 46 // ↓ 左クリック 47 if (Input.GetMouseButtonDown(0)) 48 { 49 // ↓ レイが当たっているオブジェクトを削除 50 Destroy(hit.collider.gameObject); 51 } 52 } 53 } 54}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。