Персонаж при анимации заваливается

Общие вопросы о Unity3D

Персонаж при анимации заваливается

Сообщение GrigoRich 14 апр 2019, 16:48

Почему персонаж при анимации заваливается?

Синтаксис:
Используется csharp
using UnityEngine;

public class CharacterMovement : MonoBehaviour
{
    public float walkSpeed;
    public float runSpeed;

    bool locomotion;

    float moveSpeed;
    float gravityForce;
    float vertical;
    float horizontal;
    float forward;
    Vector3 moveVector;
    Vector3 direct;

    Animator animator;
    CharacterController controller;

    private void Start()
    {
        animator = GetComponent<Animator>();
        controller = GetComponent<CharacterController>();

        moveSpeed = walkSpeed;
        locomotion = true;
    }
    private void FixedUpdate()
    {
        GamingGravity();
        Move();
        Animate();

    }

    private void Move()
    {
        moveVector.x = Input.GetAxis("Horizontal") * moveSpeed;
        moveVector.z = Input.GetAxis("Vertical") * moveSpeed;
        if (controller.isGrounded)
        {
            if (Input.GetKey(KeyCode.LeftShift) && (moveVector.x != 0 || moveVector.z != 0)) moveSpeed = runSpeed;
            else moveSpeed = walkSpeed;

            if (Vector3.Angle(Vector3.forward, moveVector) > 1f || Vector3.Angle(Vector3.forward, moveVector) == 0)
            {
                direct = Vector3.RotateTowards(transform.forward, moveVector, moveSpeed, 0.0f);
                transform.rotation = Quaternion.LookRotation(direct);
            }
        }
       
        moveVector.y = gravityForce;
        controller.Move(moveVector * Time.deltaTime);
        print(gravityForce);
    }
    void Animate()
    {
        if (controller.isGrounded)
        {
            horizontal = Input.GetAxis("Horizontal") * moveSpeed;
            vertical = Input.GetAxis("Vertical") * moveSpeed;
            forward = Mathf.Clamp01(Mathf.Abs(vertical) + Mathf.Abs(horizontal));
            if (locomotion)
            {
                animator.SetFloat("forward", forward, 0.20f, Time.deltaTime);

                if (Input.GetKey(KeyCode.LeftShift) && (moveVector.x != 0 || moveVector.z != 0)) animator.SetBool("run", true);
                else animator.SetBool("run", false);
            }
        }
       
    }
    void GamingGravity()
    {
        if (!controller.isGrounded) gravityForce -= 20f * Time.deltaTime;
        else gravityForce = -1;        
    }
}


Изображение
Изображение
Разработчик игры "Земля 2113"
_https://vk.com/public180839939
_https://www.youtube.com/channel/UCooXcTxdsOwylkbtWhCWUTQ
Аватара пользователя
GrigoRich
UNец
 
Сообщения: 7
Зарегистрирован: 07 апр 2019, 14:38

Re: Персонаж при анимации заваливается

Сообщение seaman 14 апр 2019, 19:16

Думаю анимация такая. Оси сбиты.
Глюка движка не вижу -значит раздел форума не тот
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Персонаж при анимации заваливается

Сообщение GrigoRich 15 апр 2019, 00:54

seaman писал(а):Думаю анимация такая. Оси сбиты.
Глюка движка не вижу -значит раздел форума не тот


Если убираю из скрипта гравитацию, то анимируется правильно
Разработчик игры "Земля 2113"
_https://vk.com/public180839939
_https://www.youtube.com/channel/UCooXcTxdsOwylkbtWhCWUTQ
Аватара пользователя
GrigoRich
UNец
 
Сообщения: 7
Зарегистрирован: 07 апр 2019, 14:38

Re: Персонаж при анимации заваливается

Сообщение Jarico 15 апр 2019, 12:18

GrigoRich писал(а):
seaman писал(а):Думаю анимация такая. Оси сбиты.
Глюка движка не вижу -значит раздел форума не тот


Если убираю из скрипта гравитацию, то анимируется правильно


Зачем ты используешь Character Controller и Animator на одном объекте?

Помести объект меша внутрь объекта на котором висит Character Controller и не будет такого
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Персонаж при анимации заваливается

Сообщение GrigoRich 15 апр 2019, 16:02

Jarico писал(а):
GrigoRich писал(а):
seaman писал(а):Думаю анимация такая. Оси сбиты.
Глюка движка не вижу -значит раздел форума не тот


Если убираю из скрипта гравитацию, то анимируется правильно


Зачем ты используешь Character Controller и Animator на одном объекте?

Помести объект меша внутрь объекта на котором висит Character Controller и не будет такого


было так
Изображение
Изображение
сделал так, ничего не изменилось
Изображение

Не совсем понял куда развешать Character Controller и Animator, можно подробнее
Разработчик игры "Земля 2113"
_https://vk.com/public180839939
_https://www.youtube.com/channel/UCooXcTxdsOwylkbtWhCWUTQ
Аватара пользователя
GrigoRich
UNец
 
Сообщения: 7
Зарегистрирован: 07 апр 2019, 14:38

Re: Персонаж при анимации заваливается

Сообщение GrigoRich 16 апр 2019, 10:20

Решил вопрос, как я и думал дело было в гравитации.
переделал скрипт (убрал добавление у в moveVector, добавил движение вниз в самом методе гравитации):
Синтаксис:
Используется csharp
//moveVector.y = gravityForce;
        controller.Move(moveVector * Time.deltaTime);
        print(moveVector);
    }
    void Animate()
    {
        if (controller.isGrounded)
        {
            horizontal = Input.GetAxis("Horizontal");
            vertical = Input.GetAxis("Vertical");
            forward = Mathf.Clamp01(Mathf.Abs(vertical) + Mathf.Abs(horizontal));

            if (locomotion)
            {
                animator.SetFloat("forward", forward, 0.20f, Time.deltaTime);

                if (Input.GetKey(KeyCode.LeftShift) && (moveVector.x != 0 || moveVector.z != 0)) animator.SetBool("run", true);
                else animator.SetBool("run", false);
            }
        }

    }
    void GamingGravity()
    {
        if (!controller.isGrounded) gravityForce -= -1f;
        else gravityForce = 1f;
        controller.Move(Vector3.down * gravityForce * Time.deltaTime);
    }
Разработчик игры "Земля 2113"
_https://vk.com/public180839939
_https://www.youtube.com/channel/UCooXcTxdsOwylkbtWhCWUTQ
Аватара пользователя
GrigoRich
UNец
 
Сообщения: 7
Зарегистрирован: 07 апр 2019, 14:38


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12