x축으로 회전 / 앞뒤를 붙여 동 던지기를 만들어 보았다.

 

깔끔하게 앞, 뒤를 보여주기 위해 각도를 받아서 일정 수치 이하로 속도가 줄어들 때,
해당 각도가 -면 뒤 / +면 앞을 출력하게 하려고보니
0~360도인 오일러 각이 아닌 쿼터니언 각도를 쓴단다. 쿼터니언 각도 불러오는 걸 찾아서 디버그를 해봤는데

 

툴에 표시는 절대 각도인데 디버그로는 던지기 전 상태에서 몇 도가 돌아갔는지만 나와서 +만 나오는 문제가 있었다.

쿼터니언 각도는 나중에 공부해서 시도하기로.

 

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using static UnityEngine.GraphicsBuffer;

public class Controler : MonoBehaviour
{
    float rotationSpeed = 0f;
    private float mousePos;
    float moveDistance; // 마우스 이동 거리

    void Update()
    {
        // 기본 회전 x값 설정
        this.transform.Rotate(rotationSpeed, 0, 0);

        // 쿼터니언각 디버그
        // Debug.Log(transform.rotation.ToString());

        // 오일러각 디버그
       // Debug.Log(transform.rotation.eulerAngles);

      
        // 마우스 다운/업
        bool down = Input.GetMouseButtonDown(0);
        bool up = Input.GetMouseButtonUp(0);

        // 만약 마우스를 다운 하면~
        if (down)
        {
            // 위로 올릴 거니까 마우스 y좌표를 입력 받음
            mousePos = Input.mousePosition.y;
           // Debug.Log("클릭함");
        }

        // 만약 마우스를 업하면~
        if (up)
        {
            // 마우스가 이동한 거리를 양수로 반환
            moveDistance = Mathf.Abs(mousePos - Input.mousePosition.y)*0.0008f;

            // 손을 떼면 x회전 값을 변경한다.
            rotationSpeed = 5000f;
        }

        // 손을 떼면 이동 거리를 월드 좌표를 기준으로 y축에 반영해 움직임
         this.transform.Translate( 0, moveDistance, 0, Space.World);

        // 이동 거리 줄임
        moveDistance *= 0.9f;
       // Debug.Log($"<color=yellow>이동 거리:{moveDistance}</color>");

        // 회전 속도를 줄임
        rotationSpeed *= 0.96f;
        // Debug.Log($"<color=blue>회전 속도:{rotationSpeed}</color>");
    }
}

 

'└▷던지기' 카테고리의 다른 글

던지기1  (0) 2024.09.01

+ Recent posts