inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

유니티(Unity)로 시작하는 게임개발: Part 3. 슈팅게임 개발

소행성 회전하면서 이동 - 추가

Translate() 와 로컬 좌표

586

Hyobin Kim

작성한 질문수 81

0

이해를 한 것 같은데 확인을 해주셨으면 해서요

        transform.position += Vector3.left * speed * Time.deltaTime;

        transform.Translate(Vector3.left * speed * Time.deltaTime);

위의 경우는 Vector3.left라고 왼쪽 방향으로 계속 벡터값을 더해주는데, 이걸 글로벌 좌표를 기준으로 더해주는거라서, 이 오브젝트가 어느 방향으로 바라보는지 관계 없이 무조건 왼쪽으로 이동이 된다고 말씀하시는 거죠?

아 그리고 OnBecameInvisible()이 SceneView의 카메라에도 반응 한다는거 언급 해주셨으면 합니다

좌표계 이해한다고 3d모드로 해놓고 실험하니까 Scene에서도 물체가 계속 보여서 사라지지 않더라고요

아래의 경우, Translate() 함수가 space.self라는 arugument때문에, Vector3.left의 방향 벡터가 로컬 좌표, 즉 해당 오브젝트가 바라보는 방향을 기준으로 적용이 되어서 곡선을 그리며 이동한다는 말씀이죠?

C# unity

답변 1

0

UDevApp

안녕하세요. 답변드리겠습니다.

생각하시는 내용 맞습니다.

1. transform.position 이 월드 좌표계이고 Vector3.left 의 실제 값이 -1,0,0 입니다. 

그래서 다음코드가 월드좌표에서 왼쪽으로 이동하고요. 

        transform.position += Vector3.left * speed * Time.deltaTime;

2. 그리고 Translate 의 함수의 숨겨진 파라메터의 기본값이 Space.Self 이기 때문에

로컬좌표계의 왼쪽으로 이동합니다. Vector3.left 가 -1, 0, 0 이 므로 스피드와 델타타임을 곱해서 계산한 값은 로컬좌표계의 이동거리입니다. (시간 * 속도 * 방향 = 방향을 가지는 이동거리)

좌표계 자체가 로컬좌표계로 계산되기에 Vector3.left 가 -1, 0, 0 이라는 것은 로컬좌표계의 left 라고 처리되는 것입니다.

그래서 Traslate 는 이동거리를 받는 함수입니다. (Time.deltaTime 을 넣어줘야 하지만요.)

3. 카메라에서 빠져나가면 사라지는 내용은 OnBecameInvisible 이 원래 그렇게 동작합니다. 강의를 살펴보니 화면이라고 말씀드렸는데 게임화면이 아니라 카메라에서 보여주는 화면이 맞습니다.  정확히 말하면 게임화면이 아니라 씬뷰의 화면이라고 하면 되겠네요. 나중에 아래에 설명 텍스트를 하나 추가하겠습니다. 

이전 강의의 발사체 부분에서 API 를 보여드리는 화면이 있는데 언급하지는 않았지만 이렇게 보여드렸습니다. 

감사합니다. 

캐릭터 변경에 관해

0

230

1

Asteroid 생성에 관련해서

0

194

1

Part4 유니티로 세가지의 게임만들기 강의

0

211

1

Clamp 사용 시 앞서 설정한 ViewportToWorldPoint의 min, max를 사용하지 않고 새로 설정하는 이유가 있을까요

0

283

1

섹션8 슈팅게임 프로토타입 만들기3(적과 발사체)

0

270

1

캐릭터 고정데이터 로딩 강의

0

327

1

Destroy 함수 질문

0

413

1

GetComponent 강의 질문

0

344

1

transform.position과 transform.Translate 의 차이가 뭔가요??

0

1941

1

강의도중 질문이 있습니다

0

497

1

강의자료

0

284

0

117강 구조체를 정의하여 ShipData 구성

0

224

0

굳이 InitTime을 만들어서 호출 하는 이유가 있나요?

0

291

0

GameManager 의 Start()가 스페이스 누를때마다 반복실행됩니다.

0

415

1

Collider인 other.gameObject;

0

430

0

Generic에 대한 질문이 있습니다.

0

260

0

gameObject.setActive(false);

0

582

1

애플 앱스토어

0

248

0

비주얼스튜디오 오류

0

2151

1

part4강의

0

318

1

발사체 스피드

0

305

1

4분 44초 제가 이해한게 맞는지 궁금합니다

0

271

1

2분 44초 왜 void 함수를 써야하나욤..?

0

362

1

해당 부분 업데이트

0

260

1