public void HandleEvent(GameEvent ge) { if (Pause.paused) { return; } Vector3 mousepos = InputWatcher.GetCanvasInputPosition((RectTransform)canvas.transform); if (ge.type.Equals("mouse_click")) { if (spinning) { return; } spinning = true; startingDialRot = transform.eulerAngles.z * Mathf.Deg2Rad; startingMouseRot = Mathf.Atan2(mousepos.y - anchorY, mousepos.x - anchorX); } else if (ge.type.Equals("mouse_release")) { if (!spinning) { return; } spinning = false; float mouseAngle = Mathf.Atan2((mousepos.y - anchorY) - transform.position.y, (mousepos.x - anchorX) - transform.position.x); float angleChange = mouseAngle - startingMouseRot; transform.eulerAngles = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, (startingDialRot + angleChange) * Mathf.Rad2Deg); float rotation = transform.eulerAngles.z; float lockRot = Mathf.Round(rotation / 60) * 60; UpdateSelection(lockRot); transform.rotation = Quaternion.Euler(0, 0, lockRot); } }
public void HandleEvent(GameEvent ge) { //if(Pause.paused) // return; Vector3 mousepos = InputWatcher.GetCanvasInputPosition((RectTransform)canvas.transform); if (ge.type.Equals("mouse_click")) { if (spinning) { return; } spinning = true; startingDialRot = transform.eulerAngles.z * Mathf.Deg2Rad; startingMouseRot = Mathf.Atan2(mousepos.y - anchorY, mousepos.x - anchorX); } else if (ge.type.Equals("mouse_release")) { if (!spinning) { return; } spinning = false; float mouseAngle = Mathf.Atan2((mousepos.y - anchorY) - transform.position.y, (mousepos.x - anchorX) - transform.position.x); float angleChange = mouseAngle - startingMouseRot; transform.eulerAngles = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, (startingDialRot + angleChange) * Mathf.Rad2Deg); float rotation = transform.eulerAngles.z; float lockRot = LockDegrees(rotation); //lock to the right angle based on how many options there are transform.rotation = Quaternion.Euler(0, 0, lockRot); RefreshSelectedOption(); } }
public bool TouchIsOnGunButtons() { foreach (GunButton gb in gunButtons) { if (gb.TouchIsOnMe(InputWatcher.GetCanvasInputPosition((RectTransform)canvas.transform))) { return(true); } } return(false); }
public void Update() { //if(Pause.paused) // return; if (!spinning) { return; } Vector3 mousepos = InputWatcher.GetCanvasInputPosition((RectTransform)canvas.transform); float mouseAngle = Mathf.Atan2((mousepos.y - anchorY) - transform.position.y, (mousepos.x - anchorX) - transform.position.x); float angleChange = mouseAngle - startingMouseRot; transform.eulerAngles = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, (startingDialRot + angleChange) * Mathf.Rad2Deg); }
public void Update() { if (Pause.paused) { return; } if (!spinning) { return; } Vector3 mousepos = InputWatcher.GetCanvasInputPosition((RectTransform)canvas.transform); float mouseAngle = Mathf.Atan2((mousepos.y - anchorY) - transform.position.y, (mousepos.x - anchorX) - transform.position.x); float angleChange = (mouseAngle - startingMouseRot) * directionMult; //Debug.Log("rotlockisLocked is " + rotLockIsLocked); //Debug.Log("anglechange is " + angleChange); if (rotLockIsOn) { if (rotLockIsLocked) { angleChange = 0f; } else { //cap anglechange to 2 lanes either direction if (angleChange > (2 * Mathf.PI / 3)) { angleChange = 2 * Mathf.PI / 3; } else if (angleChange < -(2 * Mathf.PI / 3)) { angleChange = -2 * Mathf.PI / 3; } if (Mathf.Abs(angleChange - oldAngleChange) > angleChangeThreshold) { angleChange = oldAngleChange; mouseAngle = oldMouseAngle; } } } transform.eulerAngles = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, (startingDialRot + angleChange) * Mathf.Rad2Deg); oldAngleChange = angleChange; oldMouseAngle = mouseAngle; }
public void HandleEvent(GameEvent ge) { if (Pause.paused) { return; } Vector3 mousepos = InputWatcher.GetCanvasInputPosition((RectTransform)canvas.transform); if (ge.type.Equals("mouse_click")) { if (spinning) { return; } if (TouchIsOnGunButtons()) { return; } else if (mousepos.magnitude < Dial.DIAL_RADIUS - 28f) { return; } else { spinning = true; startingDialRot = transform.eulerAngles.z * Mathf.Deg2Rad; startingMouseRot = Mathf.Atan2(mousepos.y - anchorY, mousepos.x - anchorX); } } else if (ge.type.Equals("mouse_release")) { if (!spinning) { return; } spinning = false; float mouseAngle = Mathf.Atan2((mousepos.y - anchorY) - transform.position.y, (mousepos.x - anchorX) - transform.position.x); float angleChange = (mouseAngle - startingMouseRot) * directionMult; if (rotLockIsOn) { if (rotLockIsLocked) { angleChange = 0f; } else { //cap anglechange to 2 lanes either direction if (angleChange > (2 * Mathf.PI / 3)) { angleChange = 2 * Mathf.PI / 3; } else if (angleChange < -(2 * Mathf.PI / 3)) { angleChange = -2 * Mathf.PI / 3; } } } transform.eulerAngles = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, (startingDialRot + angleChange) * Mathf.Rad2Deg); float rotation = transform.eulerAngles.z; float lockRot = Mathf.Round(rotation / 60) * 60; transform.rotation = Quaternion.Euler(0, 0, lockRot); GameEvent lockEvent = new GameEvent("dial_locked"); lockEvent.addArgument(lockRot); EventManager.Instance().RaiseEvent(lockEvent); Debug.Log("lockRot: " + lockRot); if (rotLockIsOn) { rotLockIsLocked = true; } } }