티스토리 뷰

Unity

Unity_ animation _trigger

잉_민 2022. 12. 14. 23:51

: 상태전이를 통해 제어 상태(State)

- Ani State : 갑자기 특정 애니메이션 플레이 할때

- Exit : 위 애니메이션 나갈때

- Entry : 애니메이션의 시작부분

 

각각의 상태는 Animation Clip or Blend Tree로 정의됨 상태 옵션

Motion : 애니메이션 클립

Speed : 재생속도

Transition : 현재 상태와 연결된 전이 정보

 

 

--- Transform (화살표부분) : 현재상태를 다른상태로 변화하도록 조건 설정

Has Exit Time : 즉각변화 여부

Transition Duration(s) : 상태 변화딜레이

Conditions : 상태전이 설정 상태값설정

float Greater/Less

int Greater/Less

bool True / False

Trigger 한번 ★ 그래프 기준점 맞쳐 주면 자연스러운 움직임 디테일!!

--- + Has Exit Time UnCheck - 즉시 변환 ( 반복 애님에서 넘어갈때 사용 )

Has Exit Time Check - 종료시점 지정 ( 현재 상태를 탈출하여 다음 상태로 넘어가는 시점 )

- 전이 조건을 만족해도 종료시점이 와야 전이가 된다.

Transition Duration - 클립을 섞어 부드럽게 이어주는 역할 ( 체크 언체크 다사용 ) ( 3D )

// 플레이 중인 애니메이션 찾기

Animator.GetCurrentAnimatorStateInfo(0).IsName("Walk");

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

//목적지를 향해 이동하고싶은데
//길찾기 기능을 이용하고싶다.
//-속력 -길찾기기능 : 네브메쉬에이전트 - 목적지
//애니메이션을 변경하고 싶다.
//-애니메이터
//fsm을 이용해서 상태를 제어하고싶다.
//대기,이동,공격
public class Enemy : MonoBehaviour
{
   public enum State
    { 
    	Idle,
        Walk,
        Attack
    }
    public State state;
    public float speed = 3.5f;
    NavMeshAgent agent;
    Transform target;

    public Animator anim; 

    // Start is called before the first frame update
    void Start()
    {
        agent = gameObject.GetComponent<NavMeshAgent>();
        agent.speed = speed;
        state = State.Idle;
        agent.isStopped = true; //신발벗음

    }

    // Update is called once per frame
    void Update()
    {
        //살아가면서 상태에 맞는 행동을 하고싶다.
        switch (state)
        {
            case State.Idle:
                UpdateIdle();
                break;
            case State.Walk:
                UpdateWalk();
                break;
            case State.Attack:
                UpdateAttack();
                break;


        }
        //if (state == State.Idle)
        //{
        //    UpdateIdle();
        //}
        //else if (state == State.Walk)
        //{
        //    UpdateWalk();

        //}
        //else if (state == State.Attack)
        //{ 
        //    UpdateAttack();

        //}
        //agent에게 목적지를 target의 위치로 하라고 계속 알려주고싶다.
        //agent.SetDestination(target.position);


    }

    private void UpdateAttack()
    {
        agent.destination = target.position;
    }

    private void UpdateWalk()
    {
     
        //플레이어를 계속 쫒아다니고싶다
        agent.destination = target.position;
        //만약내가 목적지에 도착했다면
        //남은거리 float 내위치와 타겟위치의 차이 거리
        float 남은거리 = Vector3.Distance(transform.position, target.position);
        if(agent.stoppingDistance >= 남은거리)
                {
            //공격하고싶다
            state = State.Attack;
            agent.isStopped = false;// 신발신어
            anim.SetTrigger("Attack");

        }
    }

    private void UpdateIdle()
    {
       
        //타겟을 검색해서 있으면 
        target = GameObject.Find("Player").transform;
        //목적지를 agent에게 알려주고
        agent.destination = target.position;
        //이동상태로 전이하고싶다.
        state = State.Walk;
        //이동한다
        agent.isStopped = false;// 신발신어
        anim.SetTrigger("Walk");

    }
}

https://wergia.tistory.com/212

 

[Unity3D] Animation - 애니메이터 컨트롤러의 파라미터 조절하기

Animation - 애니메이터 컨트롤러의 파라미터 조절하기 작성 기준 버전 :: 2019.2 [본 포스트는 유튜브 영상으로도 시청하실 수 있습니다] 이번 섹션에서는 애니메이터 컨트롤러의 파라미터를 스크립

wergia.tistory.com

unity setinteger

int

float

trigger

로 조절하기

 

'Unity' 카테고리의 다른 글

Unity_ postprocessing &fog  (0) 2023.01.16
VR_unity _ setting _ oculus quest2  (0) 2023.01.16
Unity _ Shader : hololens 2 MRTK UI  (1) 2022.12.09
Unity_ TD_ osc 통신_VFXgraph:scrip  (0) 2022.11.14
unity_ 타임라인 영상 기록 추출  (0) 2022.11.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함