Unity에 Sprites And Bones이있는 리가브 2D 캐릭터가 있습니다. 역기능을 사용하여 애니메이션을 만듭니다. 나는 X 축 뒤집기하려는 경우Unity에서 inverse kinematics를 사용하여 2D 문자 뒤집기
하지만, 내 캐릭터는 광포 이동 :
public void Flip(){
facingRight = !facingRight;
Vector3 karatekaScale = transform.localScale;
karatekaScale.x *= -1;
transform.localScale = karatekaScale;
}
:
나는 간단한 Flip()
기능을 포함하는 '가라테 카 "첨부 된 스크립트가
- "Karateka"는 뼈, 스프라이트 및 IK 대상의 컨테이너입니다.
- "해골"cont 스프라이트 및 본즈의 스켈레톤 스크립트
- "오른쪽 다리 뼈", "오른쪽 다리 뼈"등은 뼈와 IK 스크립트가 있습니다.
- "오른쪽 다리", "오른쪽 다리"등은 스프라이트입니다. IK를 내가 Unite 2014 - 2D Best Practices In Unity에서 다른 IK 스크립트, 간단한 CCD와 동일한 효과를
을 대상으로 모든
캐릭터를 올바르게 뒤집으려면 어떻게해야합니까? (마크)
편집 : 우리는 주석에서 설명하고있는 바와 같이, 그래서 그냥 정리해,
public void Flip(){
facingRight = !facingRight;
/*
Vector3 karatekaScale = transform.localScale;
karatekaScale.x *= -1;
transform.localScale = karatekaScale;
*/
GameObject IK = GameObject.Find ("IK");
GameObject skeleton = GameObject.Find ("Skeleton");
Vector3 ikScale = IK.transform.localScale;
ikScale.x *= -1;
IK.transform.localScale = ikScale;
if (facingRight) {
skeleton.transform.localEulerAngles = new Vector3(skeleton.transform.localEulerAngles.x, 180.0f, skeleton.transform.localEulerAngles.z);
} else {
skeleton.transform.localEulerAngles = new Vector3(skeleton.transform.localEulerAngles.x, 0.0f, skeleton.transform.localEulerAngles.z);
}
}
Sprite Renderer의 flipX/flipY 대신이 코드를 코딩 할 이유가 있습니까? https://docs.unity3d.com/ScriptReference/SpriteRenderer.html 그걸로한다면 같은 일이 발생합니까? IK 및 폴 타겟 (모든 IK 및 뼈에 대해)을 재확인 했습니까? –
나는 이해하지 못한다 : 나는 "karateka"'GameObject'에'SpriteRenderer' 컴포넌트를 가지고 있지 않습니다. 나는 각 다리에 3 개의 SpriteRenderer (총 12 개) + 몸통과 머리 부분에 대해 몇 가지 더 있습니다. 예를 들어, "오른쪽 다리", "오른쪽 다리"및 "오른발"각각에는 고유 한 'SpriteRenderer'가 있습니다. 하나를 뒤집 으면 로컬에서만 뒤집을 수 있습니다. 나는 elmpty Sprite Renderer를 맨 "karateka"객체에 추가하려고했습니다. 행운이 없었습니다. 나는'GetComponent() .flipX = true;도 시도했다. 모든 객체를 다시 검사 하겠지만, 한 방향으로 작업 중이므로 두 객체 모두에서 작동해야한다고 생각합니다. –
Cyrille
실제로 모든 것을 뒤집거나 뼈를 올바르게 재설정하지 않은 것처럼 보입니다.애니메이션이 내 눈에 너무 빠르지 만, 뼈가 제자리에 갇히고 같은 방향을 향하고 있습니다 (예 : 뒤집히지 않고 움직이지 않음 - 스프라이트의 원점은 0입니까?). 코드에서이 작업을 수행 할 때 Debug.Log를 사용하여 전체 트리의 모든 데이터를 덤프하여 "멈춤"상태를 확인할 수도 있습니다. 아무것도 없다면, 그것도 정보입니다. –