using UnityEngine;
public class PlayerRotating: MonoBehaviour
{
float _rotationgSpeed;
float _minPitch=-89f;
float _maxPitch=89f;
[SerializeField]Transform _objYaw; // mainObj
[SerializeField]Transform _objPitch; //camObj
float _yaw;
float _pitch;
public void Update()
{
float x = Input.GetAxis("Mouse X");
float y = Input.GetAxis("Mouse Y");
RotateUpdate(x,y);
}
public void RotateUpdate(float x,float y)
{
_yaw += x*_rotationgSpeed*Time.deltaTime;
_pitch-=y*_rotationgSpeed*Time.deltaTime;
_objYaw.transform.rotation = Quaternion.Euler(0,Clamper(_yaw),0);
_objPitch.transform.localRotation=Quaternion.Euler(Clamper(_pitch,_minPitch,_maxPitch),0,0);
}
float Clamper(float angle,float min=-360f,float max=360f)
{
if (angle < -360f) angle += 360f;
if (angle > 360f) angle -= 360f;
if(min!=-360f||max!=360f) angle = Mathf.Clamp(angle, min, max);
return angle;
}
}
[field: SerializeField, Range(1, 100)] private float _layerClamp = 10f;
private SpriteRenderer _render;
private void Start()
{
_render = GetComponent<SpriteRenderer>();
OrderUpdate();
}
void OrderUpdate()
{
_render.sortingOrder = (int)(transform.position.y * -_layerClamp);
}
private void Update()
{
OrderUpdate();
}
void Start()
{
attack.OnStateEnter(); //там нужно передать внутрь параметры
}
void Update()
{
attack.OnStateUpdate() //аналогично
}