public class UI_Menu : MonoBehaviour
{
ย ย [SerializeField] LayerMask layerMask;
ย ย Vector2 startMousePos;
ย ย Vector2 endMousePos;
ย ย Vector2 curMousePos;
ย ย Vector2 nextMousePos;
ย ย bool canDrag = false;
ย ย private void Update()
ย ย {
ย ย ย ย if (Input.GetMouseButtonDown(0))
ย ย ย ย {
ย ย ย ย ย ย startMousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
ย ย ย ย }
ย ย ย ย if (Input.GetMouseButton(0) && canDrag == false)
ย ย ย ย {
ย ย ย ย ย ย endMousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
ย ย ย ย ย ย if (Mathf.Abs(startMousePos.y - endMousePos.y) > 0.5f)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย canDrag = true;
ย ย ย ย ย ย }
ย ย ย ย }
ย ย ย ย if (Input.GetMouseButton(0) && canDrag == true)
ย ย ย ย {ย
ย ย ย ย ย ย nextMousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
ย ย ย ย ย ย RaycastHit2D hit = Physics2D.Raycast(nextMousePos, Vector2.zero, Mathf.Infinity, layerMask);
ย ย ย ย ย ย ย
ย ย ย ย ย ย if (hit.collider == null)
ย ย ย ย ย ย ย ย return;
ย ย ย ย ย ย if (gameObject.transform.position.y < 3.57f && nextMousePos.y > curMousePos.y)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย gameObject.transform.Translate(0, 0.06f, 0);
ย ย ย ย ย ย }
ย ย ย ย ย ย if (gameObject.transform.position.y > -4.8f && nextMousePos.y < curMousePos.y)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย gameObject.transform.Translate(0, -0.06f, 0);
ย ย ย ย ย ย }
ย ย ย ย ย ย curMousePos = nextMousePos;
ย ย ย ย }
ย ย ย ย if (Input.GetMouseButtonUp(0) && canDrag == true)
ย ย ย ย {
ย ย ย ย ย ย canDrag = false;
ย ย ย ย }
ย ย }
}
๋ฉ๋ด์ฐฝ ๋๋๊ทธํ๋ฉด ์์๋๋ก ์์ง์
๋ฉ๋ด์ฐฝ Yํฌ์ง์ ์ด -4.8~3.57 ๋ฒ์ ๋์ด๊ฐ๋ฉด ์์์ง์
์๊ณ์น ์ด์ ๋์ด๊ฐ์ผ ๋๋๊ทธ๊ฐ ์๋ํจ (๋๋๊ทธ๊ฐ ์๋๊ณ ํฐ์น๋ฅผ ํ๊ณ ์ถ์๋ฐ ์๋ํด์ ๋๋๊ทธ ๋๋๊ฑฐ ๋ฐฉ์ง)
์๋์ ๋๋๋ฐ ์ค์ผ ์ง์ ๋ถํด๋ณด์ด์ง??
์ผ๋จ if๋ฌธ ๋ด์์ ์ฒ๋ฆฌํ๋ ๊ฒ canDrag = true ๋ฐ์ ์๋ ๊ฒฝ์ฐ์ if๋ฌธ์ ์กฐ๊ฑด์์ ๋ฐ๋ก ๋ถ์ธ ๋ณ์์ ๋์ ํ๋ ๊ฒ์ผ๋ก if๋ฌธ ํ๋ ์ ๊ฑฐ ๊ฐ๋ฅํ๊ณ ๊ฐ์ ์๋ฆฌ๋ก canDrag = false๋ ์กฐ๊ฑด์ ์์ !๋ฅผ ๋ถ์ฌ์ ๋ฐฐ์ ํ๋ ๊ฒ์ผ๋ก if๋ฌธ ์ ๊ฑฐ ๊ฐ๋ฅํจ - dc App
๋ฐ๋ณต๋๋ ์กฐ๊ฑด์ธ Input.GetMouseButtonUp(0) ๋ถ๋ถ์ ํ๋ฒ๋ง ์์์ if๋ก ๋ฐ๋ก ๋ฌถ์ด๋ ์ข์๋ฏ ์์ ๊ฐ๋ค์ด ํํ์์ ๋ฐ๋ก ๋ค์ด๊ฐ๋๊ฒ ์ง์ ๋ถํ๋ฉด ์๋จ์ ์์๋ณ์๋ก ๋ฐ๋ก ์ ์ธํด ๋๋ฉด ๋ค์ ๊น๋ํด ๋ณด์ ํ์ฌ ๋ก์ง์์๋ง ์ ํจํ๊ธด ํ๊ฒ ๋ค๋ง ๋ชจ๋ ์กฐ๊ฑด์ด Input.GetMouseButtonUp(0)๊ฐ ํต๊ณผ๋์ด์ผ ๋์ด๊ฐ๋ ์ํฉ์ด๋ fast return ๊ธฐ๋ฒ์ ์ ์ฉํด๋๋ฉด ์ค์ฝํ ๋์ค๊ฐ ํ๋ ์ค์ด์ ๋ณด๊ธฐ ํธํ ๋ฏ
canDrag = !Input.GetMouseButtonUp(0) && canDrag;
ํ๋์ ๋ฉ์๋์ ๋ด๋นํ๋ ์ญํ ์ด ๋ง๊ณ if๋ฌธ์ด 3์ค ์ด์์ผ๋ก ์ค์ฒฉ๋์ ๊ทธ๋ ค