RoboidControl-csharp/Unity/TouchSensor.cs
2025-02-17 12:56:39 +01:00

57 lines
1.7 KiB
C#

#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<TouchSensor>();
Rigidbody rb = gameObj.AddComponent<Rigidbody>();
rb.isKinematic = true;
SphereCollider collider = gameObj.AddComponent<SphereCollider>();
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<Thing>().core;
}
private void OnTriggerExit(Collider other) {
this.coreSensor.touchedThing = null;
}
}
}
#endif