마우스 인터페이스 만들기 - 언리얼 스크립트 버전.

반응형

상위 링크 : http://udn.epicgames.com/Three/DevelopmentKitGemsKR.html
참조 링크 : http://udn.epicgames.com/Three/DevelopmentKitGemsCreatingAMouseInterfaceKR.html


화면에 커서를 추가하는 방법은 언리얼 스크립트를 사용 하는 방법과 스케일폼
쓰는 방법이 있다.

여기선 언리얼 스크립트 버전을 만든다.



우선 메인이 되는 GameInfo부터 설정한다.
class MouseInterfaceGameInfo  extends GameInfo;

DefaultProperties
{
 // HUD 타입을 마우스 인터페이스 HUD 로 설정
 HUDType=class'MouseInterfaceHUD'

 // 플레이어 콘트롤러를 마우스 인터페이스 플레이어 콘트롤러로 설정
 PlayerControllerClass=class'MouseInterfacePlayerController'
}

하는 일은 그냥 HUD와 PlayerControllerClass를 설정해 주는 정도이다.

우선 PlayerControllerClass를 보자면
class MouseInterfacePlayerController extends PlayerController;

// null 함수
function UpdateRotation(float DeltaTime);

DefaultProperties
{
 // 인풋 클래스 지정.
 InputClass=class'MouseInterfacePlayerInput'
}

하는일은 단지 InputClass를 지정해 주는 것 뿐이다.

그렇다면 MouseInterfacePlayerInput을 보자.
class MouseInterfacePlayerInput extends PlayerInput;

// 저장된 마우스 위치, 다른 클래스는 readonly 권한.
var PrivateWrite IntPoint MousePosition;

event PlayerInput(float DeltaTime)
{
 // 마우스 처리

 // HUD가 있는지 검사
 if(myHUD != none)
 {
  // 마우스 위치에 aMouseX를 더하고 뷰포트 폭 내로 제한.
  MousePosition.X = Clamp(MousePosition.X + aMouseX, 0, myHUD.SizeX);

  // 마우스 위치에 aMouseY를 더한 다음 뷰포트 높이내로 제한
  MousePosition.Y = Clamp(MousePosition.Y - aMouseY, 0, myHUD.SizeY);
 }

 super.PlayerInput(DeltaTime);
}

하는일은 단순히 MousePosition 변수에 마우스 위치를 저장해 주는 것 뿐이다.

마지막으로 HUD를 보면 아래와 같다.
class MouseInterfaceHUD extends HUD;

// 커서의 텍스쳐
var const Texture2D CursorTexture;

// 커서의 색
var const Color CursorColor;

event PostRender()
{
  local MouseInterfacePlayerInput MouseInterfacePlayerInput;

  // PlayerOwner와 CursorTexture가 검사
  if(PlayerOwner != none && CursorTexture != none)
  {
  // MouseInterfacePlayerInput을 구하기 위해 형 변환 (PlayerInput -> MouseInterfacePlayerInput)
  MouseInterfacePlayerInput = MouseInterfacePlayerInput(PlayerOwner.PlayerInput);

  if(MouseInterfacePlayerInput != none)
  {
   // 마우스 위치로 켄버스 위치 설정.
   Canvas.SetPos(MouseInterfacePlayerInput.MousePosition.X, MouseInterfacePlayerInput.MousePosition.Y);

   // 커서 컬러 지정
   Canvas.DrawColor = CursorColor;
   
   // 화면상에 텍스쳐 그리기
   Canvas.DrawTile(CursorTexture, CursorTexture.SizeX, CursorTexture.SizeY, 0.f, 0.f, CursorTexture.SizeX, CursorTexture.SizeY,, true);
  }
  }

  super.PostRender();
}

DefaultProperties
{
 CursorColor = (R=255,G=255,B=255,A=255)
 CursorTexture=Texture2D'EngineResources.Cursors.Arrow'
}

우선 디폴트에서 커서의 색상과 텍스쳐를 설정한다.
그리고 MouseInterfacePlayerinput에서 설정한 MousePosition값으로 켄버스를 설정하고 렌더링 하면 끝~!!!.

TAGS.

Comments