Explanation.
NGUI로 게임제작시
UI Root
└Camera
└Pannel
└2d Object(Sprite)
의 구조로 게임제작을 진행할때 사용하는 Movement
제목처럼 화면클릭시 목표좌표를 계산(NGUI에 맞게)한뒤
움직이는 방법.(Click to Move)
NGUI로 게임제작시
UI Root
└Camera
└Pannel
└2d Object(Sprite)
의 구조로 게임제작을 진행할때 사용하는 Movement
제목처럼 화면클릭시 목표좌표를 계산(NGUI에 맞게)한뒤
움직이는 방법.(Click to Move)
Movement2D.cs
using UnityEngine; using System.Collections; //click to move with NGUI public class Movement2D : MonoBehaviour { private int mUIWidth = 720; // UI Root width size private int mUIHeight = 1280; // UI Root height size private int mScreenWidth = Screen.width; private int mScreenHeight = Screen.height; private int mSpeed = 200; // pixel per sec void Update() { if (Input.GetMouseButtonDown(0)) { clickToMove(Input.mousePosition); } } void clickToMove(Vector2 mousePos) { StopCoroutine("move"); StartCoroutine("move", calcurateTargetPos(mousePos)); } IEnumerator move(Vector2 endPos) { Vector2 startPos = transform.localPosition; float startTime = Time.time; float movedTime = Vector2.Distance(startPos, endPos) / mSpeed; while (Time.time - startTime < movedTime) { transform.localPosition = Vector2.Lerp(startPos, endPos, (Time.time - startTime) / movedTime); yield return null; // wait frame } transform.localPosition = endPos; // end Position set } Vector2 calcurateTargetPos(Vector2 mousePos) { Vector2 result; result.x = Mathf.Lerp(-mUIWidth / 2, mUIWidth / 2, mousePos.x / mScreenWidth); result.y = Mathf.Lerp(-mUIHeight / 2, mUIHeight / 2, mousePos.y / mScreenHeight); return result; } }
0 개의 댓글:
댓글 쓰기