1. Rotate 뜻
- Rotate 예시 : 클릭하면 20속도로 회전하다가 점점 속도가 줄어 0으로 되어 멈추게 하기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
float speed = 0; // 클릭 전 회전 속도 0으로 초기화
void Update()
{
if (Input.GetMouseButtonDown(0)) // 클릭하면 회전 속도를 설정한다.
{
this.speed = 20 // 처음 속도는 20이다.
}
transform.Rotate(0, 0, this.speed); // 회전속도만큼 회전한다.
this.speed *= 0.96f;// 감속을 위해 0.96을ㄹ 프레임마다 곱한다.
}
}
0.96을 곱하는 이유는 자연스럽게 멈추게 하기 위해서다. 이렇게 하면 속도는
1프레임 : 속도 20
2프레임 : 속도 19.2 (20 * 0.96)
3프레임 : 속도 18.432 (20 * 0.96 * 0.96)
...
최종 속도 : 0
으로 되어 결국 멈추게 된다.
방법을 쓰면 선형함수가 아닌 지수함수처럼 감속하여 속도가 자연스럽게 줄어드는 것처럼 보인다.
2. Translate 뜻
- Translate 예시1 : 클릭하면 0.3속도로 이동하다가 점점 속도가 줄어 0으로 되어 멈추게 하기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
float speed = 0; // 클릭 전에는 이동 속도 0으로 초기화
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0)) // 클릭하면 이동 속도를 설정한다.
{
this.speed = 0.3f; // 처음 이동 속도는 0.3이다.
}
transform.Translate(this.speed, 0, 0); // 속도만큼 X로 이동한다.
this.speed *= 0.96f; // 0.96을 곱하면서 감속한다.
}
}
감속하는 원리는 Rotate와 같다.
(회전 속도에 비해 이동 속도는 굉장히 빠르다. 처음 속도를 10으로 해버리면 움직이는게 보이지도 않을 정도)
참고로 Translate(1, 0, 0) 는 (1, 0, 0) 좌표로 이동하는 것이 아니라 x방향으로 +1만큼 이동한다는 뜻이다.
- Translate 예시2 : 스와이프 길이(드레그 길이)로 이동하기
스와이프 길이(드레그 길이)는 GetMouseButtonDown 와 GetMouseButtonUp 메서드로 구할 수 있다.
* GetMouseButton 메서드 설명은 아래 참고
https://greenchoco.tistory.com/155
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RouletteController : MonoBehaviour
{
float speed = 0; // 클릭 전에는 회전 속도 0으로 초기화
Vector2 sPos; // 시작지점좌표를 sPos 로
void Start()
{
}
void Update()
{
if (Input.GetMouseButtonDown(0)) // 클릭하면 이동 속도를 설정한다.
{
this.sPos = Input.mousePosition; // 마우스 클릭한 좌표를 sPos애 대입
}
else if (Input.GetMouseButtonUp(0))
{
Vector2 ePos = Input.mousePosition; // 마우스에서 손가락 뗐을 때 좌표를 sPos에 대입
float swipe = ePos.x - this.sPos.x; // 두 점의 x축 방향 거리 길이를 swipe에 대입한다.
this.speed = swipe / 500.0f; // swipe 길이를 500으로 나눠 이동 속도로 바꾼다.
}
transform.Translate(this.speed, 0, 0); // 대입된 속도로 이동한다.
this.speed *= 0.96f; // 0.96씩 곱하면서 감속시킨다.
}
}
728x90
'유니티 C# > C#' 카테고리의 다른 글
C#기초 - Update 메서드에서 사용되는 Time.deltaTime (0) | 2023.08.11 |
---|---|
C#기초 - ToString 메서드 뜻 및 사용방법 (0) | 2023.07.18 |
C#기초 - 벡터 사용법 (Vector3, Vector2) (0) | 2023.05.14 |
C#기초 - 콜론(:)을 통한 상속(inheritance) 기능 사용 (0) | 2023.05.14 |
C#기초 - get과 set 접근자의 사용 (0) | 2023.05.14 |
댓글