inflearn logo
강의

Course

Instructor

Game Development with Unity: Part 3. Shooting Game Development

Character Limit Clamp

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

268

Yj Shon

17 asked

0

플레이어 이동 제한을 if로 구현하고 clamp로 더 쉽게 구현하는 방법을 순차적으로 안내주시니 이해하는데 도움이 되었습니다. 👍👍

 

해당 부분 관련하여 질문이 있습니다.

min = Camera.main.ViewportToWorldPoint(new Vector3(0,0,0));

max = Camera.main.ViewportToWorldPoint(new Vector3(1, 1, 0));

먼저 설정한 값을 Clamp에 사용하지 않고

 

min = new Vector3(-8, -4.5f, 0);

max = new Vector3(8, 4.5f, 0);

다시 설정하는 이유가 16:9로 해상도를 고정하기 때문이라고 하셨는데요.

앞의 min, max를 pritn 했을 때

새로 설정한 Vector3의 x, y 값이 같은 것으로 보입니다.

좌표 값을 수치로 직접 입력하시는 이유를 문의드립니다.

C# unity

Answer 1

1

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

게임 개발에서 플레이어의 이동 범위를 제한할 때 Clamp 함수를 사용해서 간편하게 구현할 수 있습니다. Camera.main.ViewportToWorldPoint를 사용해서 min, max 값을 얻은 후에, 다시 min, max 값을 직접 수치로 설정하는 경우는 몇 가지 이유가 있을 수 있습니다.

  1. 해상도 고정: 게임이 특정 해상도에서 최적화되도록 설계된 경우, 비율이 다른 해상도에서도 동일한 게임 플레이 경험을 제공하기 위해 좌표 값을 고정할 수 있습니다.
  2. 퍼포먼스: ViewportToWorldPoint는 실시간으로 계산을 수행하기 때문에, 이를 상수 값으로 대체하여 계산 비용을 절약할 수 있습니다.
  3. 간편함: 코드를 더 간단하고 명확하게 만들기 위해 특정 값을 직접 입력할 수도 있습니다. 특히 이동 범위가 자주 바뀌지 않는 경우에 유용합니다.

이러한 이유로 min, max 값을 직접 지정하는 방식을 사용할 수 있습니다. 그러나 이 방식은 게임의 해상도나 카메라 설정이 변할 때마다 해당 값을 일일이 갱신해 줘야 하는 번거로움이 있습니다. 따라서 상황에 따라 적절한 방식을 선택해서 사용해야 합니다.

참고로, ViewportToWorldPoint를 사용하는 경우 해상도가 변할 때 자동으로 값이 조정되어 유연하게 대응할 수 있는 반면, 직접 좌표 값을 입력하는 방식은 더 빠르고 안정적인 실행을 기대할 수 있지만 유연성이 떨어집니다.

강의 내용과 관련된 더 자세한 이해가 필요하시면 강의에서 설명하는 부분을 다시 확인하시거나, 직접 강사님께 문의해 보시는 것도 좋은 방법입니다.

캐릭터 변경에 관해

0

220

1

Asteroid 생성에 관련해서

0

182

1

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

0

206

1

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

0

261

1

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

0

320

1

Destroy 함수 질문

0

407

1

GetComponent 강의 질문

0

339

1

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

0

1912

1

강의도중 질문이 있습니다

0

485

1

강의자료

0

279

0

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

0

218

0

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

0

287

0

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

0

409

1

Collider인 other.gameObject;

0

423

0

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

0

257

0

gameObject.setActive(false);

0

575

1

애플 앱스토어

0

240

0

비주얼스튜디오 오류

0

2140

1

part4강의

0

307

1

발사체 스피드

0

292

1

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

0

263

1

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

0

352

1

해당 부분 업데이트

0

258

1

인터페이스를 쓰는 근본적인 이유

0

503

1