Unity 2

킴스코딩클럽·2023년 5월 15일
1

유니티

목록 보기
2/6

오브젝트 이동

  • Transform

    오브젝트에 무조건 가지고 있음(없앨 수 없음)
    오브젝트의 위치 회전 크기에 접근해서 조작할 수 있음
    transform 컴포넌트로 변환 정보를 타나내는 행렬도 있음(transfrom matrix)

  • 이동하기


 this.transform.position += new Vector3(0.01f, 0.0f, 0.0f);
  • 성능에 관계없이 동일하게 이동하기 위해 => 시간 활용(업데이트가 다시 발생할 때 까지의 시간)
    void Update()
    {
        this.transform.position += new Vector3(1.0f*Time.deltaTime, 0.0f, 0.0f);
    }
  • Translate 활용
 Vector3 direct = new Vector3(1.0f, 1.0f, 0.0f).normalized;  //방향 정보를 유지하기위해서 길이를 일정하게 

        transform.Translate(direct * 10.0f * Time.deltaTime);
  • 목표에 따라가기
        targetObj = GameObject.Find("Target");
        direction = (targetObj.transform.position - this.transform.position).normalized ;
        //타켓방향의 dirctiona만듬
targetObj = GameObject.Find("Target"); 
 transform.Translate(direct * 10.0f * Time.deltaTime);
  • 회전하기
        //quarterion : 잘모름 이해하기 힘듬 
        this.transform.rotation = Quaternion.Euler(30.0f, 20.0f, 20.0f);
        //오일러각을 쿼터니언으로 변경
        rota += speed * Time.deltaTime;

        this.transform.rotation=Quaternion.Euler(0.0f,rota, 0.0f);
         this.transform.rotation = Quaternion.AngleAxis(rota, Vector3.up);  //월드좌표를 기준으로 환산함 (Space.World)
         this.transform.RotateAround(targetObj.transform.position, Vector3.up, speed * Time.deltaTime); //around 타겟을 기준으로 회전
  • 보간(interpolation)

    값 2개 사이에 위치한 값을 추정
    값이 변화할 때 (빛이 변하거나 물체가 이동하거나) 사용

        this.transform.rotation=Quaternion.Lerp(this.transform.rotation,Quaternion.LookRotation(dir),speed * Time.deltaTime);
        //두 값 사이의 선형 보간
        //움직임을 부드럽게 하기위해 Lerp를 사용
  • GetAxis

    사용자 입력에 따라 해당 축의 부드럽게 변하는 값을 반환시켜줌(보간 이용)

    float value=Input.GetAxis("축 이름 (input manager로 설정)");
    value는 보통 -1.0~1.0사이 

오브젝트 크기

  • lossyScale

    read only(읽기 전용)
    게임 전역 크기를 나타냄
    localScale의 부모 object의 스케일도 고려해 부모 오브젝트 스케일 변환 고려
    Transform.lossyScale

  • localScale

    오브젝트 전역의 로컬 스케일 조정
    부모 스케일 변환 고려하지 않음
    벡터(Vector3)형태로 표현

 this.transform.SetParent(null);
        this.transform.localScale = new Vector3(4.0f, 4.0f, 4.0f);  //변경가능한 것은 localScale만 가능하다
        // this.transform.SetParent(_parent);

        Debug.Log("lossyScale = " + this.name + " " + this.transform.lossyScale); // 절대적인 크기 (read only)
        Debug.Log("localScale = " + this.name + " " + this.transform.localScale); // 상대적인 크기

Prefab(premade fabrication)

  • hireachy상의 만들어진 구조물을 project폴더로 드래그 그 반대로 이동하면 복사에서 사용(파란색으로 변경됨)

    오브젝트를 생성해 재사용하기 쉽도록 하기위해 오브젝트의 모양,동작,속성을 정의한 템플릿
    필요할 때마다 씬에 인스턴스로 생성해 사용,배치할 수 있음
    일관성있는 오브젝트 관리에 필요

Rigidbody

힘 중력 충돌 등의 물리 작용에 영향을 받을 수 있는 물리 시뮬레이션 컴포넌트

  • AddForce

    물체에 힘을 가하는 메서드, 힘을 가하면 움직임이 가능

  • useGravity

    중력에 영향 받을지 여부를 결정 boolean타입

public Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        rb.useGravity = false;
        rb.AddForce(Vector3.forward * 10f, ForceMode.Force);
    }
    
profile
공부 기록용

0개의 댓글