Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Unity C#] Animator

Ostatnio zmodyfikowano 2024-09-01 21:52
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
[Unity C#] Animator
» 2024-09-01 18:59:41
Witam.
Pracuję z Unity i próbuję zdefiniować animacje. Posiadam odpowiedni model 3D z animacjami i chciałbym móc korzystać z tych animacji w taki sposób, że gdy gracz nic nie robi to renderuje animacje idle, zaś gdy się przemieszcza, wtedy jest wyświetlana animacja walk. Jak to zrobić ?

Animacje:
"C StandA Idle"
"C Walk Front@Loop"

Wrzucam screen z Animator'a i skrypt playerController


ps. Dodawać kod C# jako cpp?


C/C++
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class PlayerController
: MonoBehaviour
{
   
   
public Rigidbody rb;
   
public Animator anim;
   
private Vector3 movement;
   
private float speed = 5.0f;
   
// how define animations ?
    // public anim_idle
    // public anim_walk
   
    // Start is called before the first frame update
   
void Start()
   
{
       
rb = GetComponent < Rigidbody >();
       
anim = GetComponent < Animator >();
       
// how to set animation ?
       
anim.speed = speed;
   
}
   
   
   
// Update is called once per frame
   
void Update()
   
{
       
float moveX = Input.GetAxis( "Horizontal" );
       
float moveZ = Input.GetAxis( "Vertical" );
       
       
movement = new Vector3( moveX, 0.0f, moveZ );
       
       
       
/*
        if(moveX != 0.0f || moveZ != 0.0f)
            how to set walk animation ?
        else
            how to set idle animation ?
        /*
    }

    private void FixedUpdate()
    {
        rb.MovePosition(rb.position + movement * Time.fixedDeltaTime);
    }
}[/cpp]

P-181538
pekfos
» 2024-09-01 21:04:02
Nie chcesz tak przestawiać animacji, bo będzie to generować widoczne niedopasowania.
https://stackoverflow.com/questions/44070207/how-to-switch-between-two-animations-in-unity

Dodawać kod C# jako cpp?
Lepiej tak niż bez żadnego formatowania.
P-181539
tBane
Temat założony przez niniejszego użytkownika
» 2024-09-01 21:52:27
Należy najpierw otworzyć edytor Animacji Window->Animation->Animator. Następnie dodać tam animację. Gdy już to zrobimy można w łatwy sposób przełączać animację w skrypcie.


C/C++
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class PlayerController
: MonoBehaviour
{
   
   
public Rigidbody rb;
   
public Animator anim;
   
private Vector3 movement;
   
private float speed = 5.0f;
   
// how define animations ?
    // public anim_idle
    // public anim_walk
   
    // Start is called before the first frame update
   
void Start()
   
{
       
rb = GetComponent < Rigidbody >();
       
anim = GetComponent < Animator >();
       
anim.Play( "C StandA" );
       
anim.speed = speed;
   
}
   
   
   
// Update is called once per frame
   
void Update()
   
{
       
float moveX = Input.GetAxis( "Horizontal" );
       
float moveZ = Input.GetAxis( "Vertical" );
       
       
movement = new Vector3( moveX, 0.0f, moveZ );
       
       
if( moveX != 0.0f || moveZ != 0.0f )
           
 anim.Play( "Walk_front@loop" );
       
else
           
 anim.Play( "standA@loop 0" );
       
   
}
   
   
private void FixedUpdate()
   
{
       
rb.MovePosition( rb.position + movement * Time.fixedDeltaTime );
   
}
}
P-181540
« 1 »
  Strona 1 z 1