2014-02-18 4 views
1

현재 Unity에서 2d Platformer를 만들려고합니다. 단 한 가지를 제외하고는 모두 잘 작동합니다. Left 또는 Right를 밀면 내 스프라이트 애니메이션이 올바른 방향으로 반사됩니다. 나는 현재 컨트롤러 입력을 추가하려하고 있지만 아날로그 좌/우를 밀어 넣는 것을 목표로하는 것 같지 않습니다. 스틱을 오른쪽으로 밀 때 거울을 비추고 반대의 경우도 마찬가지입니다.Unity 2d 플랫폼 컨트롤러 지원

희망 누군가가 나를 도울 수 :

#pragma strict 

var X : float; 

function Start() { 
//Gathering normal object scale 
X = transform.localScale.x; 
} 

function Update() { 
    if(Input.GetKey("a")) { 
    // Gamer pushes left arrow key 
    // Set texture to normal position 
    transform.localScale.x = -X; 
} 
else if (Input.GetKey("d")) { 
    // Gamer pushes right arrow key 
    // Flip texture 
    transform.localScale.x = X; 
} 
if(Input.GetKey("left")) { 
    // Gamer pushes left arrow key 
    // Set texture to normal position 
    transform.localScale.x = -X; 
} 
else if (Input.GetKey("right")) { 
    // Gamer pushes right arrow key 
    // Flip texture 
    transform.localScale.x = X; 
} 
if(Input.GetAxis("Horizontal")) { 
    // Gamer pushes left arrow key 
    // Set texture to normal position 
    transform.localScale.x = -X; 
} 
else if (Input.GetAxis("Horizontal")) { 
    // Gamer pushes right arrow key 
    // Flip texture 
    transform.localScale.x = X; 
    } 
} 

답변

1

을 당신이 있습니다

당신이 동일한 Input.GetAxis을 확인하기 때문에 항상 호출 될 경우
if(Input.GetAxis("Horizontal")) { 
// Gamer pushes left arrow key 
// Set texture to normal position 
transform.localScale.x = -X; 
} 
else if (Input.GetAxis("Horizontal")) { 
// Gamer pushes right arrow key 
// Flip texture 
transform.localScale.x = X; 
} 

다른 두 번째() .

은 다음과 같이 뭔가를 시도 :

if (Input.GetAxis("Horizontal") < 0) 
{ 
    transform.localScale.x = -X; 
} 
else if (Input.GetAxis("Horizontal") > 0) 
{ 
    transform.localScale.x = X; 
} 

Input.GetAxis ("수평")를 누를 수있는 모든 왼쪽과 오른쪽 키를 확인하고 왼쪽 또는 오른쪽 키 중 하나에 따라 번호를 뱉어 나는 '왼쪽 화살표'키를 눌러한다면 ...

, 그것은 뉴을 반환 0에서 -1 사이의 값. '오른쪽 화살표'키를 누르면 0과 1 사이의 숫자가 반환됩니다.

의미가 있습니까?

+0

안녕하세요, 네, 이해가됩니다. 현재 수업 중이므로 컨트롤러로 스크립트를 테스트 할 수있는 기회가 없습니다. 따라서이 스크립트는 가로가 0보다 왼쪽으로 이동하고 가로가 0보다 큰 경우 오른쪽으로 이동한다는 것을 의미합니까? 화합은 내 왼쪽 아날로그가 입력임을 자동적으로 이해합니까? 이 외에도 유선 컨트롤러의 D 패드를 입력 단원에 추가했습니다. 그리고 그것은 작동하지만, 2 개의 수평축을 추가해야합니다. 하나는 D 패드의 왼쪽 화살표 용이고 다른 하나는 오른쪽 용입니다. –

+0

@QuincyNorbert Yeh 전 어떻게 입력을 설정했는지 알지 못하지만 아래 링크를 읽으면 도움이되는지 알 수 있습니다. http://docs.unity3d.com/Documentation/ScriptReference/Input.GetAxis .html 자신 만의 맞춤형 패드를 만들었습니까? – Savlon

+0

나는 당신의 방법을 시도하고 지금은 많이 감사하고 일하고있다! 나는 이것을 한 번 시도했지만 else if 문에> 0을 추가하는 것을 잊었다. –

0

나는 단순한 끔찍한 표준 입력을 완전히 차단하고 InControl로 전환합니다.

API를 사용하면 어떤 기기가 사용되고 있는지 감지 할 수 있으며 매우 간단하고 효율적인 멀티 플레이어 지원이 가능합니다.

다른 게임 패드와 플랫폼에 대한 매핑을 사용하면 표준 레이아웃을 개발할 수 있으므로 다양한 플랫폼에서 컨트롤을 어느 정도 작동시키려는 노력을 줄일 수 있습니다.