본문 바로가기
# 게임/# Unity

움직임 입력값

by 쁘레레레레레 2020. 7. 29.

지금까지 점프/공격을 제외하고서도

        if ((Input.GetKeyDown(KeyCode.Space) || Input.GetButtonDown("Jump")))

이런식으로 처리하곤 했다.

Input.GetKeyDown(KeyCode.Space)로 컴퓨터로 테스트할때 조작용으로 코드를 넣고

Input.GetButtonDown("Jump")로 모바일 조작용 코드를 같이 넣었다.

 

이 경우는 점프의 경우이지만

 

상하좌우로 이동할때도 비슷하게 했었는데

getAxisRaw를 하면 굳이 update함수에 위와같이 넣어주지 않아도 된다.

 

복잡한 경우를 제외하고 단순히 이동만 하고자 하는 경우를 가정할때

private Vector2 Movement;
public float MovementVelocity; //어떠한 값을 설정했다고 가정 예) 0.5
private float MovementDirection;
private Rigidbody2D rb2D;

public float climbVelocity; // 위와 같이 어떠한 값을 설정했다고 가정
private float climbDirection;
public float gravityStore;
private void Update()
{
	if(onLadder)
    {
    	rb2D.gravityScale = 0f;
    	Movement.y = Input.GetAxisRaw("Vertical");
        climbDirection = climbVelocity * Movement.y;
        
        rb2D.velocity = new Vector2(rb2D.velocity.x,climbDirection);
    }
    else if(!onLadder)
    {
    	rb2D.gravityScale = gravityStore;
	}
	move();
}

private void Start()
{
	rb2D = GetComponent<Rigidbody2D>();
    gravityStore = rb2D.gravityScale;
}

private void move()
{
	Movement.x = Input.GetAxisRaw("Horizontal");
    
    MovementDirection = MovementVelocity * Movement.x;
    
    rb2D.velocity = new Vector2(MovementDirection,rb2D.velocity.y);
}
    

VisualStudio를 거치지 않고 여기서 대강 적은 코드이다. 오류에 조심해야한다.

 

move관련한 속도값과 오르고 내릴때 속도값을 따로 주었고  오를땐 중력값이 0이 되어야하니 따로 값을 만들어 저장했고 따로 설정해주었다.

 

onLadder엔 따로 onTrigger를 써서 on off를 설정해 주었는데  이에 관한 설명은

https://atli-yeondi.tistory.com/33

 

사다리 만들기

몇일전부터 틈틈히 사다리를 만들려고 애썼다. 원래 코드 private void climb() { rb2D.gravityScale = 0.0f; movement.y = Input.GetAxisRaw("Vertical"); Vector3 moveVelocity = new Vector3(0, 0, 0); if (mov..

atli-yeondi.tistory.com

위 글 중간쯤 보면 코드가 나와있다.

 

이 방법을 사용하면 이러한 간단한 이동엔 굳이 keyCode를 쓰지 않아도 된다.