
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>");
}
}

