Как ограничить вращение предмета в 2D Unity C#
Всем привет, делаю игру с оружием (я новичок) Сделал чтобы оружие и голова следили за мышкой:
Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
float rotZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, rotZ );
Нужно чтобы было ограничение на 60 и -20 градусов, и также наоборот, чтобы при развороте перса в другую сторону все работало корректно, вот как я попробовал реализовать эту функцию, но ожидаемо это не сработало:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Heads : MonoBehaviour
{
public float headz;
headz = transform.rotation.z
// Start is called before the first frame update
// Update is called once per frame
void Update()
{
if(headz <60| headz > -20)
{
Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
float rotZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, rotZ );
}
}
}
Пожалуйста, помогите с решением проблемы, в ютубе не нашел, сам не понимаю как сделать это, вот скрины с игры:
Ответы (1 шт):
Автор решения: Manciny
→ Ссылка
void Update()
{
Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
float rotZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
rotZ = Mathf.Clamp(rotZ, -20f, 60f);
transform.eulerAngles = Quaternion.Euler(0f, 0f, rotZ);
}