대포 오브젝트 제어 스크립트

public float downSpeed = 5f;
// 게이지가 내려갈때의 속도를 나타내는 코드. 초기값은 5초이며
Inspector 창에서 수정가능
private bool isFilling = true;
// 슬라이더가 채워지고 있는지 여부를 나타내는 플래그 변수
true일 경우 슬라이더가 충전 중이고, false일 경우 충전이 멈춤.

slider.value = currentPower / maxPower;
// 슬라이더의 현재 값을 업데이트.
currentPower를 maxPower로 나눈 값은 0에서 1 사이의 비율로 나타냄

Vector3 forward = Quaternion.Euler(-90, 0, 0) * transform.forward;
- Quaternion.Euler(-90, 0, 0)
// 현재 방향에서 X축을 -90도 회전한 방향을 계산하고
대포가 위로 발사되도록 방향을 보정
- transform.forward
이 값은 객체의 로컬좌표 정면 방향을 나타냄.
(월드좌표는 Vector3.forward)
AddForce(forward * currentPower, ForceMode.Impulse)
- ForceMode.Impulse
// 즉각적인 속도를 부여(현 코드에서는 순간적으로 대포알이 발사되도록 함)\
해당 코드가 없으면, 대포알이 정상적으로 발사대지 않음.
currentPower = 0.0f;
// 발사력이 초기화
다음 발사를 위해 충전이 다시 시작
(해당 코드가 없으면, 스페이스를 떼어도 값이 초기화되지 않음.
약하게 발사하고싶으면, 다시 스페이스바를 눌러서 게이지가 되돌아가야하는거를
기다려야함.)
slider.value = 0.0f;
// UI 슬라이더를 초기 상태로 되돌림.
플레이어에게 발사력이 0임을 표시
(해당 코드가 없으면, 스페이스 바를 때도 슬라이더 값이 초기화되지 않음.
약하게 발사하고싶으면, 다시 스페이스바를 눌러서 게이지가 되돌아가야하는거를
기다려야함.)

private void OnTriggerEnter(Collider other)
// 현재 오브젝트에 트리거로 설정된 콜라이더(isTrigger = true)가 있어야 해당 함수를 실행
Vector3 hitDirection = GetComponent<Rigidbody>().velocity * -1;
- GetComponent<Rigidbody>().velocity
// 이 오브젝트의 현재 속도 벡터를 가져옴.
_ -1
// 현재 속도 방향의 반대 방향(즉, 충돌 방향)을 계산
( 만약 오브젝트가 오른쪽으로 이동 중이라면(velocity가 (1, 0, 0)), hitDirection은 왼쪽 방향이 됨(-1, 0, 0)).
(해당 코드가 없다면 오브젝트가 이동하는 방향으로 파편이 더 집중적으로 생성되거나 흩어질 수 있음)
int count = Random.Range(MinPiaceCount, MaxPiaceCount + 1);
// 지정된 최소값(MinPiaceCount)과 최대값(MaxPiaceCount) 사이의 정수형 난수를 생성
그 값을 count ( 생성할 파편의 개수 ) 에 할당.
Vector3 randomDiretion = Random.insideUnitSphere;
- Random.insideUnitSphere
// 반지름이 1인 단위 구(unit sphere) 내부에서 무작위 위치를 반환하는 함수.
반환 값은 Vector3 타입이며, 각 구성 요소는 -1과 1 사이의 값을 가짐
결과로 나온 벡터는 원점(0, 0, 0)을 중심으로 한 단위 구의 내부 어딘가에 위치하는
백터로 변환됨( 현재 스크립트에서는 무작위 방향을 생성하기 위해 사용됨)
Vector3 lastDiretion = Quaternion.LookRotation(randomDiretion) * hitDirection;
- Quaternion.LookRotation(randomDiretion)
randomDiretion 방향으로 향하도록 오브젝트를 회전시키는 회전 값을 만듬.
- * hitDirection
Rigidbody의 속도(velocity)를 반전시킨 값.
Quaternion.LookRotation(randomDiretion) 에 hitDirection 을 곱함으로서
hitDirection을 randomDiretion 방향으로 회전시킴.
Destroy(this.gameObject);
// 충돌한 현재 오브젝트를 제거
파편만 남고 원래 오브젝트는 사라지게 됨.

IEnumerator Start()
- IEnumerator
코루틴을 정의할 때 사용하는 반환 타입.
일시적인 중단을 허용하는 함수로, 시간이 걸리는 작업을 처리할 때 유용.
( IEnumerator를 사용하면, yield return 을 통해 코드 실행을 중단하거나,
일정 시간이 지난 후에 계속 실행할 수 있음.)
yield return new WaitForSeconds(3f);
- yield return
코루틴에서 지연을 설정하는 명령어.
이 구문이 실행되면, 코루틴은 잠시 멈추고 주어진 조건이 완료될 때까지 기다림.
- WaitForSeconds(3f)
3초 동안 기다리는 명령어.
Destroy(this.gameObject)
// 3초 후에 해당 오브젝트를 파괴함.
'게임 개발(유니티) > 멋쟁이 사자처럼 3기_회고록' 카테고리의 다른 글
| [멋쟁이사자처럼 유니티 TIL] 2024_12_17(화) 강의 요약 및 정리 (0) | 2024.12.17 |
|---|---|
| [멋쟁이사자처럼 유니티 TIL] 2024_12_17(화) 강의 요약 및 정리(0) (0) | 2024.12.16 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_12(목) 강의 요약 및 정리(1) (0) | 2024.12.12 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_11(수) 강의 요약 및 정리 (0) | 2024.12.11 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_10(화) 강의 요약 및 정리(2) (0) | 2024.12.10 |