so I’m trying to rotate an object and lock the rotation of object once it reaches certain point with event trigger. Below is my code:
using UnityEngine;
using UnityEngine.EventSystems;
using System.Collections;
public class TurnLeftRightSwitches : MonoBehaviour {
public EventTrigger trigger;
public float turnDial = 1.0f;
public float limitAngle = 230.0f;
public float lockRotation;
public void Start ()
{
trigger = GetComponent<EventTrigger>();
trigger.AddListener(EventTriggerType.Drag, OnDrag);
}
public void OnDrag (BaseEventData data)
{
Debug.Log ("Hit");
if (Input.GetAxis("Mouse X") > 0) {
this.transform.Rotate (0, 0, turnDial);
if (transform.rotation.z >= limitAngle)
{
transform.rotation = Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y, lockRotation);
}
}
if (Input.GetAxis("Mouse X") < 0)
{
this.transform.Rotate (0, 0, -turnDial);
}
}
}
I can rotate an object using my mouse X from left to right. The thing is, when the dial reaches certain position (say, 0 (the starting min rotation) and 230 (desired max rotation), I have no idea how to make object stop rotating. Quaternion isn’t working as well so that’s pretty much broken code as of right now. Is there way to lock the object’s rotation without using rigidbody?
In short, I’d like to know if there is a way to stop an object rotating beyond certain point without Rigidbody, Update(), and sample code in c#, please.
Thanks for all help in advance.