유니티 - HasExitTime 사용

본 논문에서는 문제 AnimatorController 애니메이션 스위칭 전환, 변환 및 hasExitTime 문제이다 전이를 분석한다. 모든 방법으로 실제 프로젝트 분류, 논리 다이어그램, 시각적 분석을 계획하는 것은 이러한 문제를 해결합니다.


AnimatorController 애니메이션 컨트롤러

  • 기능 : 전환 모드에 연결되어 기존의 논리적 접속 편의 애니메이션 번역 감독 세그먼트 스위칭 포함하는 방법 hasExitTime 가능폐쇄를 hasExitTime
  • - Search.com : 단일 방향 파라미터의 전환이 전환되는 파라미터들을 설정함으로써, 하나의 선을 할 수있는 여러 상황이 단선 복수의 조건이 될 수있다. 번역 것을 알 수있다 선택한 두 동영상 클립 간격 창 및 창 설정 매개 변수 테이블 Inspecter
  • hasExitTime는 : 거기에 종료하는 시간입니다. 이해하기 간단한 :; 표현은 현재 애니메이션을 종료하고 다음 애니메이션을 재생 즉시 중단 할 수있는 현재의 차례를 기다린 다음 영화 전에 완료 애니메이션을 나타냅니다

프로젝트 전투

  • 배경 : 유휴 idle_2, attack_1, attack_2 있는가 attack_3을 달성 영화 클립 trifecta에 공격 효과 스위칭 공격 수치에 따라. 우리는 몇 스위치 공격에 집중하는
    • attack_1-> attack_2 닫기 hasExitTime가 마비 상태 = 2 스위칭 번역 초과하지
    • attack_2-> attack_3 : 오픈 hasExitTime가 마비 상태 = 3 스위칭 번역 초과하지
    • attack_1, attack_2는 idle_2에 attack_3 : 스위치 절환 상태 공격 = 0, 제어 코드가 결정된다 임의 애니메이션 공격을 완료 = 0

AnimatorController :

attack_1-> attack_2 (왼쪽), attack_2-> attack_3 (오른쪽) 번역 :

1. 닫기 종료 시간이

닫기 종료 시간을 가지고 : 없음 종료 대기 시간, 바로 다음 동영상을 볼 수 없습니다

  • 사례 1 : 정상적인 작동을 attack_1 경우, 전면 왼쪽 마크는 직업 변경 조건에 도달
    • 번역 즉시 열고 attack_2 (오히려 왼쪽 마크에 실행 기다리는 것보다), 세 개의 병렬 운전
      • 번역은 여전히 실행되지만 완료 attack_1 처음 실행, 나타내는 경우 현재 만화 attack_1가 (코드 : 소진 (stateInfo.IsName("attack_1") && stateInfo.normalizedTime > 1)) == true), 판단은 논리적으로 영향을 받게 될,이 실수를하는 것은 매우 쉽습니다
      • attack_1가 계속 실행하면, 번역은 즉시 attack_1 조각을 중지 첫 번째 실행을 완료했습니다. 정상 로직
    • attack_2에 의해 다음 전체 영화 전체 작업 이후
  • 사례 2 : attack_1의 정상 작동 좌측 태그 (좌측 또는 우측 후방 플래그 태그) 전환 조건을 달성
    • 번역 즉시 온 attack_2 세 병렬 운전
      • 번역이 아직 실행중인 경우, 위의 결과, 실행을 완료, 현재 만화 attack_2 대신에, 때까지 도망 attack_1
      • attack_1가 계속 실행하면, 번역은 첫째 즉시 attack_2 조각을 중지, 실행이 완료되었습니다. 정상 로직
    • attack_2에 의해 다음 전체 영화 전체 작업 이후

도 보정 로직 :( : COUNT = 0을 나타내고 공격 = 0)

전면 왼쪽 규모 (첫 번째)에 도달, 표준은 번역 후 (후) 완료 왼쪽에 도달 : 프로젝트는 그림

2.는 종료 시간이

종료 시간이있는 경우 :이 종료 대기 시간을, 다음 애니메이션으로 전환하기 전에 특정 단계에 현재 애니메이션의 완료를 기다립니다. 프로세스 :

  • 전환 조건 전에 마크에 도달하기 위해 떠나는 경우에 나는, attack_2 정상 작동을 .:
    • 대기 만화 attack_2가 번역 attack_3 전환 애니메이션 애니메이션 열고 마크 남겨 ,, 3 개 병렬 운전
      • 번역은 여전히 실행되지만 완료 attack_2 처음 실행, 나타내는 경우 현재 만화 attack_2가 (코드 : 소진 (stateInfo.IsName("attack_1") && stateInfo.normalizedTime > 1)) == true), 판단은 논리적으로 영향을 받게 될,이 실수를하는 것은 매우 쉽습니다
      • attack_2가 계속 실행하면, 번역은 즉시 attack_2 조각을 중지 첫 번째 실행을 완료했습니다. 정상 로직
    • 이 지점 attack_3하여 전체 애니메이션 전체 작업에서;
  • 사례 2 : attack_2 정상 작동 상태는 왼쪽 표시 한 후 도달 한 경우
    • 이 중 또는 오른쪽 조건의 표시 이행을 표시 한 후이든 전환 타임 슬라이스가 놓칠 수 있기 때문에, 더 이상 트리거 할 수 없습니다 번역 변환

도 보정 로직 :( : COUNT = 0을 나타내고 공격 = 0)

프로젝트 도표 : (첫번째)에 도달 전면 왼쪽 규모, (후) 표준 후 왼쪽에 도달


개요

대한 물음표 내에서 번역 :

  • 의미의 범위에 대한 마크 :
    • 번역 긴 천이 시간 길이 개의 애니메이션
  • 의미에 대한 마크 위치 :
    • 현재 애니메이션의 경우 : 왼쪽 숫자와 애니메이션의 다음 개방 시점 변환, 바로 표시가 현재 만화의 최신 시점을 표시 할 수 있습니다
    • 다음 애니메이션의 경우 : 좌회전이 시간 현재 애니메이션 포인트, 현재 동작 점 애니메이션 풀 타임에 대한 올바른 표시로 표시됩니다
    • 인기 설명 : 변환, 얼마나 오래 완료되면, 두 개의 애니메이션 변환의 비율
  • 범위의 의미 :
    • 예컨대 attack_1 시간 세그먼트 attack_2 전이 함께 혼합 attack_2 애니메이션, 그렇게하여 유니티 attack_1 따른 전환 애니메이션 평행 -called 세 애니메이션은 애니메이션을 번역의 혼합 특성을 수행 . 외부 참고 : 아직 전환 기간 attack_1에 , 코드는 다음과 같습니다 stateInfo.IsName("attack_1")==trueattack_2 최종 번역을 고려하는 경우에만

애니메이션 질문 후 번역 오류 :

직관적으로 오류가 두 애니메이션과 번역 연대기 문제는 숫자를 봐 타이밍을 조건으로 번역과 마지막 지점, 범위의 크기입니다. 따라서 솔루션은 이러한 점에 초점을, 몇 가지 제안은 여기에서 주어진다 :

  • 번역 오른쪽 마크 바람직 <= 애니메이션이 종료되기 전에, 즉 번역 애니메이션의 길이를 초과하지
  • 왼쪽 마커에 도달하기 전에 가장 좋은 변환 조건 우리는 변환 과정을 제어 할 수 있도록,
  • 설정이 유일한 방법이 아니다 AnimatorController 코드 제어, 내부 애니메이션 삽입 이벤트 등, 더 안전한 핸드 오버 애니메이션을 달성하기 위해 우리를 도와 드릴 수 있습니다

참고

추천

출처www.cnblogs.com/SouthBegonia/p/11748429.html