카테고리 없음

25.02.17(월) - TIL 21일차 Unity 입문

rxo2 2025. 2. 17. 20:51

localPosition은 현재 객체의 부모 기준 위치를 나타냄

transform.position은 월드 좌표(World Position) 기준 위치를 의미

로컬 좌표는 부모 오브젝트를 0,0,0 기준

월드 좌표는 월드 좌표에서의 0,0,0 좌표가 기준

 

 

public class Obstacle : MonoBehaviour 
{
    public float highPosY = 1f; 
    public float lowPosY = -1f;                               
    public float holeSizeMin = 1f;
    public float holeSizeMax = 3f;
    public Transform topObject;
    public Transform bottomObject; 
    public float widthpadding = 4f;

public 으로 선언시 unity 인스펙터 창에서 해당 오브젝트(Obstacle장애물)를 직접 수정가능

다른것으로 선언시 수정 불가능.

 

 

Vector3 pos = transform.position; // 내 위치 가져오기
pos.x = target.position.x + offsetX; // 캐릭터의 위치로 카메라가 가는것이 아니고
// 캐릭터의 위치보다 처음에 배치했건 거리(offsetX)만큼 떨어진 상태로 따라감
transform.position = pos; // 포지션을 가져올때는 항상 변수에 한번 저장했다가
                                        // 변조하고 다시 저장시키는 방법을 써야한다 

Obstacle[] obstacles= GameObject.FindObjectsOfType<Obstacle>();
// FindObjectsOfType<Obstacle>()의 뜻은 이 씬에 존재하는 모든 오브젝트들을 돌아다니면서
// Obstacle 이 달려있는걸 전부 다 찾아서 넘겨준다

 

 

static GameManager gameManager; // 본인을 참조할 수 있는 static 변수public static GameManager Instance { get { return gameManager; } }
// 그 변수를 외부로 가져갈 수 있는 프로퍼티(Instance) // instance // 싱글톤 클래스의 유일한 인스턴스
private void Awake()
{
    gameManager = this; // 가장 최초의 객체를 설정해주는 작업
}

 

 

SceneManager.LoadScene(SceneManager.GetActiveScene().name);
//SceneManager 사용시 using UnityEngine.SceneManagement;

//현재 활성화된 씬(Scene)을 다시 가져오고 씬의 이름을 사용하여 로드(재시작)하는 코드입니다.

 

 

newTrans = newBlock.transform;
newTrans.parent = this.transform;

새로 생성된 오브젝트(newBlock)의 Transform을 가져와서, 현재 오브젝트(this.transform)의

자식으로 설정하는 코드.

다르게 설명하면 

newTrans 가 this.transform 의 하위 오브젝트가됨

this 가 누구냐 TheStack(현재 작성중인 스크립트) 스크립트가 부착된 오브젝트

 

 

선형 보간법 - Lerp > 위치, 속도 , 색상, 크기 를 부드럽게 변화시킬때 사용

transform.position = Vector3.Lerp(transform.position, desiredPosition, stackMovingSpeed * Time.deltaTime);

현재 오브젝트의 위치(transform.position)를 목표 위치(desiredPosition)로

부드럽게 이동시키는 역할을 합니다.

Vector3.Lerp(start, end, t)

start에서 end로 보간(중간값 계산) 하여 부드럽게 이동

t 값(0~1)을 기반으로 두 위치 사이의 중간값을 반환

 

 

blockTransition += Time.deltaTime * BlockMovingSpeed;
//블럭 진행값에 Time.deltaTime을 곱해 프레임 속도와 무관하게 일정한 속도로 증가


float movePosition = Mathf.PingPong(blockTransition, BoundSize) - BoundSize / 2;
// 블럭을 좌우든 상하든 왕복운동을 시키는 역할수행 // 괄호 안의 값 = Mathf.PingPong(t, length)
// blockTransition 이 0 ~ BoundSize(length(3.5))까지 올라갔다 내려갔다 반복 
// 이를  나누기2를 하면 범위로 변환하여 양쪽으로 대칭적인 움직인 구현 // 기준을 1.75로 만듬

양수그래프에서만 위아래로 움직이다가 /2 를 하면 0을 기준으로 양,음수를 왕복운동함.