Unity GameDev 노트 #1 "퍼즐 맞추기 동작"

6944 단어 UnityC#

1. 시작


이 기사는 내가 생각한 일, 공부한 일 등을 필기로 썼다.상황에 따라 제목과 약간 어긋나는 내용을 포함할 수도 있고 언어 부족, 지식 오류가 있을 수도 있다.나는 가능한 한 상세하게 쓸 것이니 참고가 되었으면 좋겠다.

2.본편


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. 요약


이번에는 네모난 블록의 목적 위치를 좌표로 제시했지만 수수께끼에 따라 여러 구멍에 빠질 수도 있다.이 경우 레이로 구멍을 만들어 가장 가까운 구멍으로 옮기는 것도 방법일 수 있다.
이상은 바로'퍼즐 블록의 행위'입니다.
조금이나마 참고가 되었으면 좋겠습니다.감사합니다!

좋은 웹페이지 즐겨찾기