Unity GameDev 노트 #1 "퍼즐 맞추기 동작"
1. 시작
이 기사는 내가 생각한 일, 공부한 일 등을 필기로 썼다.상황에 따라 제목과 약간 어긋나는 내용을 포함할 수도 있고 언어 부족, 지식 오류가 있을 수도 있다.나는 가능한 한 상세하게 쓸 것이니 참고가 되었으면 좋겠다.
2.본편
I. 드래그로 퍼즐 이동
사용된 함수
함수
OnMouseDrag()
마우스를 드래그해서 대상을 정할 때 실행
Input.mousePosition
마우스 좌표(세계 좌표 획득)
Camera.main.ScreenToWorldPoint()
세계 좌표를 카메라 화면 좌표로 바꾸다
코드 예
move_piece.csusing System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move_piece : MonoBehaviour {
private void OnMouseDrag()
{
Vector3 ObjPos = Input.mousePosition;
ObjPos.z = 10f;
transform.position = Camera.main.ScreenToWorldPoint(ObjPos);
}
}
ObjPos라는 좌표의 저장 변수를 준비합니다.최종적으로 이 변수의 좌표는 대상의 위치에 있다.
move_piece.csObjPos.z = 10f;
이 코드가 없으면 대상의 z 좌표가 0이어서 게임 화면을 표시할 수 없습니다.
move_piece.cstransform.position = Camera.main.ScreenToWorldPoint(ObjPos);
Debug.로그 (ObjPos) 로 확인할 수 있지만, 이 코드로 세계 좌표와 화면 좌표를 전환합니다.
보통 mousePosition은 세계 좌표로 ObjPos에 직접 대입하면 게임 화면이 게임 화면의 먼 곳으로 날아간다.
II. 블록을 박을 때의 행동
각 블록에 의도 좌표를 설정하고 점의 거리에 근접할 때 설정된 좌표로 이동하여 "원형 퍼즐 블록의 동작"을 목표로 합니다.
사용된 함수
함수
OnMouseUp()
마우스가 대상을 떠날 때 실행
Mathf.Abs()
취() 내의 절대값
코드 예
move_piece.csusing System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move_piece : MonoBehaviour {
public Vector3 GoalPos;
public float span;
private void OnMouseDrag()
{
Vector3 ObjPos = Input.mousePosition;
ObjPos.z = 10f;
transform.position = Camera.main.ScreenToWorldPoint(ObjPos);
Debug.Log(Input.mousePosition);
}
private void OnMouseUp()
{
float x_length = Mathf.Abs(GoalPos.x - transform.position.x);
float y_length = Mathf.Abs(GoalPos.y - transform.position.y);
if (x_length <= span && y_length <= span)
{
transform.position = GoalPos;
}
}
}
On Mouse Up()이 추가되었습니다.
span에서 임의로 거리를 설정하고 드래그한 대상 좌표와 목표 좌표의 거리의 절대값을 span과 비교하여 span 이하에서 점프한다.
Ⅲ. 구현 사례
스핀의 값을 조정함으로써 블록의 점프 거리를 변경할 수 있습니다.
3. 요약
이번에는 네모난 블록의 목적 위치를 좌표로 제시했지만 수수께끼에 따라 여러 구멍에 빠질 수도 있다.이 경우 레이로 구멍을 만들어 가장 가까운 구멍으로 옮기는 것도 방법일 수 있다.
이상은 바로'퍼즐 블록의 행위'입니다.
조금이나마 참고가 되었으면 좋겠습니다.감사합니다!
Reference
이 문제에 관하여(Unity GameDev 노트 #1 "퍼즐 맞추기 동작"), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/poipoi_spopoi/items/cb0423e5159ec0c945eb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
I. 드래그로 퍼즐 이동
사용된 함수
함수
OnMouseDrag()
마우스를 드래그해서 대상을 정할 때 실행
Input.mousePosition
마우스 좌표(세계 좌표 획득)
Camera.main.ScreenToWorldPoint()
세계 좌표를 카메라 화면 좌표로 바꾸다
코드 예
move_piece.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move_piece : MonoBehaviour {
private void OnMouseDrag()
{
Vector3 ObjPos = Input.mousePosition;
ObjPos.z = 10f;
transform.position = Camera.main.ScreenToWorldPoint(ObjPos);
}
}
ObjPos라는 좌표의 저장 변수를 준비합니다.최종적으로 이 변수의 좌표는 대상의 위치에 있다.move_piece.cs
ObjPos.z = 10f;
이 코드가 없으면 대상의 z 좌표가 0이어서 게임 화면을 표시할 수 없습니다.move_piece.cs
transform.position = Camera.main.ScreenToWorldPoint(ObjPos);
Debug.로그 (ObjPos) 로 확인할 수 있지만, 이 코드로 세계 좌표와 화면 좌표를 전환합니다.보통 mousePosition은 세계 좌표로 ObjPos에 직접 대입하면 게임 화면이 게임 화면의 먼 곳으로 날아간다.
II. 블록을 박을 때의 행동
각 블록에 의도 좌표를 설정하고 점의 거리에 근접할 때 설정된 좌표로 이동하여 "원형 퍼즐 블록의 동작"을 목표로 합니다.
사용된 함수
함수
OnMouseUp()
마우스가 대상을 떠날 때 실행
Mathf.Abs()
취() 내의 절대값
코드 예
move_piece.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move_piece : MonoBehaviour {
public Vector3 GoalPos;
public float span;
private void OnMouseDrag()
{
Vector3 ObjPos = Input.mousePosition;
ObjPos.z = 10f;
transform.position = Camera.main.ScreenToWorldPoint(ObjPos);
Debug.Log(Input.mousePosition);
}
private void OnMouseUp()
{
float x_length = Mathf.Abs(GoalPos.x - transform.position.x);
float y_length = Mathf.Abs(GoalPos.y - transform.position.y);
if (x_length <= span && y_length <= span)
{
transform.position = GoalPos;
}
}
}
On Mouse Up()이 추가되었습니다.span에서 임의로 거리를 설정하고 드래그한 대상 좌표와 목표 좌표의 거리의 절대값을 span과 비교하여 span 이하에서 점프한다.
Ⅲ. 구현 사례
스핀의 값을 조정함으로써 블록의 점프 거리를 변경할 수 있습니다.
3. 요약
이번에는 네모난 블록의 목적 위치를 좌표로 제시했지만 수수께끼에 따라 여러 구멍에 빠질 수도 있다.이 경우 레이로 구멍을 만들어 가장 가까운 구멍으로 옮기는 것도 방법일 수 있다.
이상은 바로'퍼즐 블록의 행위'입니다.
조금이나마 참고가 되었으면 좋겠습니다.감사합니다!
Reference
이 문제에 관하여(Unity GameDev 노트 #1 "퍼즐 맞추기 동작"), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/poipoi_spopoi/items/cb0423e5159ec0c945eb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Unity GameDev 노트 #1 "퍼즐 맞추기 동작"), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/poipoi_spopoi/items/cb0423e5159ec0c945eb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)