티스토리 뷰


- Tile based games (http://www.tonypa.pri.ee/tbw/start.html)
위 튜토리얼을 기본으로 하여 Android에 사용될 수 있게끔 공부한 포스트 입니다.



이번 포스트는 Tile based games의 다음 내용이 캐릭터 움직이기 이므로 방향키 구현이 필요하기 때문에 방향키 제작에 대해 잠시 적어보도록 하겠다. 이미지 파일도 함께 첨부하니 사용하면 된다.

해당 소스는 알다시피 버전 관리 항목을 살펴보면 항상 작업한 소스들이 올라와있다. 참고하면 되겠다.



1. 방향키 구조

현재 사용중인 프레임워크는 onTouch 이벤트를 받아서 처리 되고 있다. 때문에 onTouch 함수에서 keyEvent 변수를 받아서 이벤트 처리를 해주면 된다. 이부분은 간단하니 생략하도록 하겠다.

<방향키에서 필요로 하는 항목>
- 현재 눌리고 있는 키 값
- 이전에 눌린 키 값

<방향키 구현을 위한 아이디어>
- 터치(Action Down, Action Up, Action Move)에 대한 이벤트 처리
- 방향키는 Move 상태에서도 반응하도록 처리
- 방향키 버튼 영역 외에서의 터치 반응 이벤트 처리

2. 소스

public static int BEFORE_DIRECTION_KEY = 4;	// Center = 4
public static int CURRENT_DIRECTION_KEY = 4;	// Center = 4

현재와 이전키 값을 저장할 변수를 만들어 주었다.
터치가 들어오면 이 값을 셋팅해주도록 할 메소드를 추가한다.

public void onTouchListener(int x, int y, int KeyAction) {
		
	if(mJoypadRect.contains(x, y) != true) {
			
		if(KeyAction == MotionEvent.ACTION_UP)
			CURRENT_DIRECTION_KEY = UI_Enum.KEY_DIRECTION_CENTER;
			
		if(CURRENT_DIRECTION_KEY == UI_Enum.KEY_DIRECTION_CENTER) {
			setDirectionValue(UI_Enum.KEY_DIRECTION_CENTER);
			BEFORE_DIRECTION_KEY = UI_Enum.KEY_DIRECTION_CENTER;
		}
		return;
	}
		
	for(int i=0; i < INT_DIRECTION_PAD; i++) {
		if(m_UIButtonBox[i].onTouchListener(x, y, KeyAction)==true) {
			switch(KeyAction) {
			case MotionEvent.ACTION_DOWN:
			case MotionEvent.ACTION_MOVE:
				setDirectionValue(i);
				BEFORE_DIRECTION_KEY = i;
				break;
			case MotionEvent.ACTION_UP:
				setDirectionValue(UI_Enum.KEY_DIRECTION_CENTER);
				setBeforeDirectionValue(BEFORE_DIRECTION_KEY);
				break;
			}
		}
	}
}

루프를 돌면서 어떤 버튼이 눌렸는지 체크를 한다. D-Pad 영역 밖에서 이루어지는 터치나 move 이벤트의 경우도 처리를 통해 사용자 편의성을 늘렸다.

- Move 를 통해 D-pad 영역 밖으로 이동한 경우에는 마지막으로 눌렸던 방향이 설정됨
- D-pad 영역 밖에서 Action Up이 이루어지면 D-pad의 이미지는 눌리기 전 상태로 변경되도록 설정

이 외에는 특이한 사항이 없으므로 그만 설명하도록 하겠다.
댓글
  • 프로필사진 오오료 타일베이스게임을 안드로이드로 재해석 하시는군요
    정말 멋진 작업 입니다 존경 스럽습니다~!!!
    강좌 잘보고 있습니다^^
    2011.08.19 08:06
  • 프로필사진 Favicon of https://starkapin.tistory.com BlogIcon 유승구 설마 찾아오시는 분이 계실줄은 몰랐네요; ㅎㅎ
    워낙 듬성 듬성 올려서 착한 글이 아닌데 이렇게 봐주시니 감사합니다.좀더 자세히 적고 싶은데 저도 구현하다보니 쉽지만은 않습니다. ㅎㅎ
    분발해야 겠네요 ㅎㅎ
    2011.08.22 16:54 신고
  • 프로필사진 나인트 레이트 방향키 이미지 너무 좋군요
    심플하면서도 ㅋㅋ
    잘쓰겠습니다!@@!
    2012.03.02 17:25
  • 프로필사진 Favicon of https://starkapin.tistory.com BlogIcon 유승구 안녕하세요. ^^
    잘 쓰셔주신다니 감사합니다.
    2012.03.02 22:39 신고
  • 프로필사진 DdKa 보고 디패드를 구현해볼려고 했는데요 이미지를 어떻게 삽입하는지..그리고 소스가 오류나네요 2014.10.18 18:34
댓글쓰기 폼