Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- const화
- 주기억장치
- 범위 기반 for문
- IPv4 주소체계
- r-value참조자
- c언어 괄호검사
- 문자형 배열
- auto 키워드
- 프로그래머스 배열만들기4
- 값/참조/주소에 의한 전달
- l-value참조자
- 유형 변환
- 프로그래머스 푸드 파이트 대회
- const l-value참조자
- 회전 및 자리 이동 연산
- 괄호 검사 프로그램
- C언어 덱
- LAN의 분류
- 네트워크 결합
- getline()함수
- C언어 계산기 프로그램
- 논리 연산
- 원형 연결 구조 연결된 큐
- 운영체제 기능
- C언어 스택 연산
- 문제해결 단계
- 입출력 관리자
- string유형
- 백준 파이썬
- 알고리즘 조건
Archives
- Today
- Total
chyam
[Unity] - UI 이미지 부드럽게 회전하기(Quaternion.Slerp) 본문
구현 목표는 아래 사진의 네모칸 부분(별이 나타날 부분)에
1. 별이 하나씩 가운데부터 생성되기
2. 생성되면서 별이 회전하도록하기 이었습니다!


먼저 네모난 박스 안에서 일정한 간격으로 생성되어야하기 때문에,
아래와 같이 부모 오브젝트인 stars에 Grid Layout Group을 추가해주고,


가운데부터 자식 오브젝트들이 순차적으로 생성되게 하기 위해서 Child Alignment를 Middle Center로 해주었습니다!
만약 Middle Left로 하게 된다면 아래와 같이 왼쪽부터 채워지게 됩니다

[Header("별 개수")]
public int star_cnt = 3; // 채워진 별의 개수
public int max_star = 4; // 최대 별의 개수
public GameObject star_prefab; // 별 프리펩
public GameObject parent; // 부모 오브젝트
void Start()
{
StartCoroutine(review_star());
}
IEnumerator review_star()
{
for (int i = 0; i < max_star; i++)
{
bool isfull = i < star_cnt; // 채워져야하는 별이면 true
// 별 생성
GameObject star = Instantiate(star_prefab, parent.transform);
if (isfull) // 채워져야한다면 노란색으로 변경
star.GetComponent<Image>().color = Color.yellow;
RectTransform rect = star.GetComponent<RectTransform>();
if (rect != null)
rect.anchoredPosition = new Vector2(0f, 0f); // 가운데로 anchor 바꾸기
// 별 회전 애니메이션 시작
StartCoroutine(RotateStar(star.transform, Quaternion.Euler(0f, 180f, 0f), 0.5f));
yield return new WaitForSeconds(0.5f); // 별 간 생성 간격
}
}
IEnumerator RotateStar(Transform target, Quaternion targetRotation, float duration)
{
// 시작점 기록
Quaternion startRotation = target.rotation;
float time = 0f;
while (time < duration)
{
time += Time.deltaTime;
float t = time / duration;
// starRotation부터 targetRotation까지 t시간 동안 부드럽게 회전하도록!
target.rotation = Quaternion.Slerp(startRotation, targetRotation, t);
yield return null;
}
}
'unity' 카테고리의 다른 글
| [Unity] - 슬라이더 이미지 변경 및 색 채우기 (Slider) (0) | 2025.11.13 |
|---|---|
| [Unity] - UI 버튼 선택/해제 구현 (1) | 2025.09.01 |
| [Unity] - 스프레드 시트와 연동하기 (0) | 2025.08.21 |
| [unity] - 버튼 클릭하여 저장된 정보 불러오기 (1) | 2025.07.01 |
| [Unity] - JSON 파일 저장하고 불러오기 (1) | 2025.06.04 |