#if UNITY_5_3_OR_NEWER using System.Collections; using UnityEngine; namespace Passer.Control.Unity { public class TouchSensor : Thing { public Core.TouchSensor coreSensor { get => (Core.TouchSensor)base.core; } protected virtual void Start() { if (core == null) SetCoreThing(new Core.TouchSensor()); //StartCoroutine(MeasureDistance()); } bool update = false; protected override void Update() { base.Update(); this.update= false; } public static TouchSensor Create(Core.TouchSensor core) { GameObject gameObj = core.name != null ? new(core.name) : new("Touch Sensor"); TouchSensor component = gameObj.AddComponent(); Rigidbody rb = gameObj.AddComponent(); rb.isKinematic = true; SphereCollider collider = gameObj.AddComponent(); collider.radius = 0.01F; collider.isTrigger = true; component.core = core; if (core.parent != null && core.parent.component != null) gameObj.transform.SetParent(core.parent.component.transform, false); if (core.position != null) gameObj.transform.localPosition = core.position.ToVector3(); return component; } private void OnTriggerEnter(Collider other) { Debug.Log("Touch!"); this.coreSensor.touchedThing = other.transform.GetComponentInParent().core; } private void OnTriggerExit(Collider other) { this.coreSensor.touchedThing = null; } } } #endif