[SerializeField]private GameObject camera;[SerializeField]private GameObject target;this.UpdateAsObservable() .Subscribe(_ => { // <https://qiita.com/edo_m18/items/c8808f318f5abfa8af1e> var n = Vector3.forward; var x = target.transform.position; var x0 = camera.transform.position; var m = camera.transform.forward; var h = Vector3.Dot(n, x); var hitPos = x0 + ((h - Vector3.Dot(n, x0)) / (Vector3.Dot(n, m))) * m; });
Tag “Screen” オブジェクトとのヒットを検出
using UnityEngine;public class CursorController : MonoBehaviour { // Update is called once per frame void Update() { var ray = new Ray(Camera.main.transform.position, Camera.main.transform.rotation * Vector3.forward); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.transform.gameObject.name == "Screen") { Debug.Log("Hit"); transform.position = hit.point + new Vector3(0, 0.01f, 0); } } }}