유니티/유니티 공부

Vector2 클래스, transform, GetMouseButtonDown

DOlpa_GB 2024. 2. 3. 16:15

<Vector2>

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    void Start()
    {
        Vector2 start = new Vector2(3.0f, 5.0f);
        Vector2 end = new Vector2(11.0f, 15.0f);
        Vector2 dir = end - start;
        Debug.Log(dir);
        Debug.Log(dir.magnitude);   
    }
}

 

Vector2는 엄연한 클래스이기 때문에 변수를 만들어준뒤 값을 넣어줘야 한다

 

Vector 클래스에 들어가는 값들은 float형이다

 

Ventor2 dir = start - end    => dir은 둘 사이의 거리를 구하지만

dir.magnitude                    => magnitude는 둘 사이의 길이를 구해준다

 

 

<transform, GetMouseButtonDown>

 

 

이 룰렛이 마우스를 클릭할때마다 돌아갈수 있게 스크립트를 작성할거다

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    float rotatespeed;
    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
           rotatespeed = 30;
        }
       transform.Rotate(0, 0, rotatespeed);
    }
}

 

Input.GetMouseButton 메서드

키보드건 마우스건 뭔가 누르는것에 관련되있는건 무조건 Input을 앞에 붙인다

GetMouseButton( 0 : 왼쪽클릭, 1: 오른쪽클릭, 2 : 휠 클릭)

 

transform.Rotate(0,0, rotatespeed)

오브젝트의 위치, 움직임에 관련된것은 transform을 앞에 붙인다

 

 

Rotate( x축, y축, z축) => 룰렛이 회전하는데 어느축이 쓰이는지 알고 싶다면 3D로 전환한뒤 직접 확인이 가능하다

 

하지만 위와 같이  스크립트를 짠다면 우리가 아는것처럼 부드럽게 룰렛이 굴러가는게 아닌 뚝뚝 끊기며 돌아가게 된다

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    float rotatespeed = 50.0f;
    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            rotatespeed = 30;
        }
        transform.Rotate(0, 0, rotatespeed);

        rotatespeed *= 0.99f;
        //rotatespeed -= 0.1f;
    }
}

 

rotatespeed *= 0.99f;

부드럽게 굴러가다가 서서히 멈추게 하기 위해서는 rotatespeed를 조금씩 깎아 0에 가까워지게 만들어야하며

매 프레임마다 0.99를 곱하게 해주었더니 우리가 아는 룰렛처럼 부드럽게 움직인다

 

//rotatespeed -= 0.1f

그러다 혹시 매 프레임마다 0.1씩 빼주면 어떻게 될까 해보았더니 처음엔 정상적으로 멈추는듯 하다

잠깐의 정지뒤 곧바로 역방향으로 가속도가 붙어 돌아가는것을 확인할수 있었다

 

rotatespeed는 얼마든지 0밑의 마이너스로 떨어질수 있다는것을 간과하였다

반응형

'유니티 > 유니티 공부' 카테고리의 다른 글

프리팹, 충돌판정  (2) 2024.02.04
Vector와 transform 응용, UI 표시, 효과음 삽입  (0) 2024.02.03
총정리 (용어정리)  (0) 2024.02.03
물리엔진, 애니메이션, 씬 변환  (1) 2024.02.01
물리엔진  (0) 2024.01.31