본문 바로가기

GameDevelopmentDiary/Project_SomewhereSaga : 가제(맵 에디터에서 중지)

5일차

스케쥴  : Schedule Sheet

MapEditor

  1. Camera
    1. CameraMover. <완료>
      1. InputKey 참고하여 방향설정.
      2. 맵 크기를 참조하여 제한영역 설정.
      3. 속도만큼 이동.
  2. InputManager
    1. KeyboardController. <완료>
      1. Key 입력 시 List<KeyCode>에 누적. (중복 시 무시).
      2. 현재 이동관련 이벤트 호출.
  3. MapEditor <일시정지>
    1. Canvas지정. <완료>
    2. DrawController 
      • MapData Load 및 파라메터 셋팅. <40%>
      • Tile 및 Obstacle 기본셋팅. <30%>
    3. BrushController
      • Tile 변경. <완료>  - 오브젝트 필요
      • Obstacle 변경. <0%>
      • Obstacle 위치 이동. <0%>
    4. ToolBox <25%>
      • Layout. <50%> 
      • TileTap. <완료>
      • Obstacle Tap.
      • Unit Tap. -미정-

----------------------------------------------------------------------------------------------------------------------------------------


InputKey관련.



Input.AnyKey : 어떤 키라도 눌렸으면 true반환.

Input.GetKey(KeyCode key) : key값이 눌려있으면 계속 true반환.

Input.GetKeyDown(KeyCode key) : key값이 눌린 순간 true반환.

Input.inputString 매 프레임 눌린 Char값을 반환.


사용 예

using System.Collections.Generic;
using UnityEngine;

public class KeyBoardController : MonoBehaviour
{

List inputKeyList = new List(); 

    void Update () {
        if (Input.anyKey) { //무슨 key라도 눌리면
            if (Input.GetKey(KeyCode.LeftControl)) { //LeftControl 이 눌리면
                if (inptKeyList가 비어있고 LeftControl이 없을 때 ) { //List.contain(value) 사용.
                    inputKeyList.Add(KeyCode.LeftControl);
                }
            }
            foreach (char c in Input.inputString) {
                KeyCode k = (KeyCode)c.GetHashCode();

                if ( inputKeyList 에 c가 없을 때  ) {// c를 대문자 치환하여 HashCode로 비교했음(Unity 기준).                         
                    inputKeyList.Add(k);                     
                    EventDivision(inputKeyList);
                } 
            }
        }
        else {
            inputKeyList.Clear();
            //Debug.Log("key clear");
        }
    }

    void EventDivision(List keys) {
        foreach(KeyCode key in keys) {
            List moveKeyList = new List() {
                KeyCode.W, KeyCode.A, KeyCode.S, KeyCode.D,
                KeyCode.UpArrow, KeyCode.LeftArrow, KeyCode.DownArrow, KeyCode.RightArrow
            }; 

            if (moveKeyList.Contains(key)==true) {//moveKeyList 에 key가 있는지 확인
                EventManager.instance.InputtedDirectonKeyFunc(keys); //방향키 이벤트 호출(EventManager 필요).
                Debug.Log("InputDirectionKeyEvent");
            }
        }     
    }//임시적으로 이벤트를 구별하여 호출하기위한 함수.
}



'GameDevelopmentDiary > Project_SomewhereSaga : 가제(맵 에디터에서 중지)' 카테고리의 다른 글

8 - 10일차  (0) 2019.03.20
6,7일차  (0) 2019.03.06
4일차  (0) 2019.02.24
3일차  (0) 2019.02.23
2일차  (0) 2019.02.20