[英]How do I limit z-axis rotation in unity?
我正在为 android 编写 2d 游戏。 我有一个从 180 度旋转到 - 180 度的角色。 但我需要将 z 的变换旋转限制为 50 和 -50。 我知道可以通过 Math.Clamp() 实现,但我无法应用它。 请帮助我:这是我的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public : MonoBehaviour
{
private Camera myCam;
private Vector3 screenPos;
private float angle0ffset;
private Collider2D col;
private void Start()
{
myCam = Camera.main;
col = GetComponent<Collider2D>();
}
private void Update()
{
Vector3 mousePos = myCam.ScreenToWorldPoint(Input.mousePosition);
( (Input.GetMouseButtonDown(0))
screenPos = myCam.WorldToScreenPoint(transform.position);
Vector3 vec3 = Input.mousePosition - screenPos;
angle0ffset = (Mathf.Atan2(transform.right.y, transform.right.x) - Mathf.Atan2(vec3.y, vec3.x)) * Mathf.Rad2Deg;
}
}
( (Input.GetMouseButton(0))
{
if(col == Physics2D.OverlapPoint(mousePos))
{
Vector3 vec3 = Input.mousePosition ;
float angl = Mathf.Atan2(vec3.y, vec3.x) * Mathf.Rad2Deg;
transform.eulerAngles = new Vector3(0,0, angl + angle0ffset);
}
}
}
}
实际上,您可以做的是使用Mathf.Clamp()
。 你会做的是:
rotationZ = Mathf.Clamp(transform.localRotation.z, -lookZLimit, lookZLimit); transform.localRotation = Quaternion.Euler(rotationZ, 0, 0);
在您的情况下,您的rotationX
将是:
rotationZ = Mathf.Clamp(transform.localRotation.z, -50, 50);
然后应用新计算的旋转:
transform.localRotation = Quaternion.Euler(rotationZ, 0, 0);
注意:这必须在Update()
中完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.