Синтаксис:
Используется csharp
private Animation anim;
private Rigidbody rb;
[SerializeField]
private float speed = 4f;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody>();
anim = GetComponent<Animation>();
}
// Update is called once per frame
void Update()
{
float x = CrossPlatformInputManager.GetAxis("Horizontal");
float y = CrossPlatformInputManager.GetAxis("Vertical");
Vector3 movement = new Vector3(x, 0.0f, y);
rb.velocity = movement*4f;
if (x != 0 && y != 0)
{[list=][/list]
transform.eulerAngles = new Vector3(transform.eulerAngles.x, Mathf.Atan2(x, y) * Mathf.Rad2Deg, transform.eulerAngles.z);
}
if (x!=0 || y != 0)
{
anim.Play("Walk");
}
else
{
anim.Play("Idle");
}
private Rigidbody rb;
[SerializeField]
private float speed = 4f;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody>();
anim = GetComponent<Animation>();
}
// Update is called once per frame
void Update()
{
float x = CrossPlatformInputManager.GetAxis("Horizontal");
float y = CrossPlatformInputManager.GetAxis("Vertical");
Vector3 movement = new Vector3(x, 0.0f, y);
rb.velocity = movement*4f;
if (x != 0 && y != 0)
{[list=][/list]
transform.eulerAngles = new Vector3(transform.eulerAngles.x, Mathf.Atan2(x, y) * Mathf.Rad2Deg, transform.eulerAngles.z);
}
if (x!=0 || y != 0)
{
anim.Play("Walk");
}
else
{
anim.Play("Idle");
}
Для начала персонаж не хочет двигаться по вертикали, начинает двигать вверх или в низ, пока я не начну менять положение по Y а не по Z, и это первая непонятная проблема
Вторая проблема в конструкции IF
Синтаксис:
Используется csharp
if (x != 0 && y != 0)
{
transform.eulerAngles = new Vector3(transform.eulerAngles.x, Mathf.Atan2(x, y) * Mathf.Rad2Deg, transform.eulerAngles.z);
}
{
transform.eulerAngles = new Vector3(transform.eulerAngles.x, Mathf.Atan2(x, y) * Mathf.Rad2Deg, transform.eulerAngles.z);
}
тут он должен рассчитывать угол поворота для Y и поворачивать что бы перемещение казалось реалистичным, однако если рассматривать движение по горизонтали то он не просто поговаривает модель влево\право а ещё ставит её вверх ногами, если брать вертикаль то при движении модель просто "ложится" на поверхность, подскажите что не так. Код не мой брал, брал у зарубежного блогера, у него всё работает без изъянов