inflearn logo
강의

Course

Instructor

Game Development with Unity: Part 3. Shooting Game Development

Background scroll

"position.x + spr.bounds.size.x /2 < -8 보다 작을때" 가 무슨 말인지 잘 모르겠습니다.

Resolved

521

dinamis763200

19 asked

1

배경 스프라이트의 중심점이 position.x 이고 + 배경 스프라이트 사이즈의 반을 더한 값이 월드좌표계 X 좌표 -8 보다 작아질 때 뒤로 넘긴다는 것이 알 것 같으면서도 잘 모르겠습니다. ㅠㅠ

position.x + spr.bounds.size.x /2 < -8 보다 작아지면,,,,

-7 > -8

-8 = -8

-9 < -8

position.x + spr.bounds.size.x /2 = -9 가 될때인데,,,

position.x + spr.bounds.size.x /2 는 배경스프라이트가 이동할 때 표시되는 오른쪽 제일 끝 하단의 X축 좌표 인가요?

뭔가 두리뭉실하게는 이해가 되는데 정확하게는 어떻게 그렇게 작동하는지 몰라서 질문 남깁니다.

배경스크롤 배경무한반복 unity C#

Answer 2

1

dinamis763200

답변 감사합니다!! 

제가 어렴풋이나마 이해하고 있었던게 맞는거였군요? ㅎㅎ

말씀해주신대로 코드를 짜서 게임을 프레임 단위로 실행시키며 콘솔창  rightPosition 값이 -8 보다 작아지는 걸 확인하니 배경 동작이 이해 되었습니다. 근데 소수점 단위로 넘어가는건 몰랐어요 ㅠㅠ 

항상 자세하게 설명해 주셔서 정말 감사합니다!!

1

UDevApp

말씀하신 곳에 답이 있습니다.  ^^

position.x + spr.bounds.size.x /2 이 오른쪽 제일 끝 하단의 x축 좌표입니다. 

좀더 설명드리자면 움직이는 이미지의 가운데 센터의 점이 position.x 이죠.

이 값은 계속 왼쪽으로 움직이고 있고요. 

그리고 spr.bounds.size.x /2 가 이미지의 절반사이즈이고요.

position.x 가 위치를 넘어갔을때 새로 셋팅을 해주지 않으면 이미지가 계속 왼쪽으로 흘러갑니다.

그래서 position.x + spr.bounds.size.x /2(왼쪽 하단 위치) 가 화면 왼쪽을 넘어가는 순간

position.x 위치를 재조정하게 됩니다. 

이해가 안가시면 이렇게 한번 코드를 짜보시면서 값을 살펴보세요.

float rightPosition= position.x + spr.bounds.size.x /2 ;

print(rightPosition);

if(rightPosition < -8){

    // 실행로직

}

코드를 길게 짜면 쉽게 이해가 갈수도 있습니다. 

그리고 혹시 아시겠지만 값이 1단위로 넘어가는 게 아니라 소수점단위로 넘어갑니다.

rightPosition  값이 계속 조금씩 작아지다가요. -7.7 -7.8, -7.9 이런식으로요.

그러다가 -8 보다 작아지는 순간에 "실행로직"이 실행되죠.

그리고 이해하기 쉬운 다른 방법이 있다고 생각해보면요.

spr.bounds.size.x 가 아마 4인가 3인가 될거예요.

이 값을 그냥 고정을 해서 소스를 살펴볼수도 있고요. 

다음과 같이요.

if(position.x + 4) <-8 ;

print(position.x);

if(rightPosition < -8){

    // 실행로직

}

position.x + spr.bounds.size.x /2 이만큼에서 값이 계속 바뀌니까요.  정확한 값을 생각하기보다는 다음과 같이 머리속에서 그리시면 좋습니다. 

position.x + spr.bounds.size.x /2       (이미지의 오른쪽 끝 위치)

혹시 이해안되시면 다시 말씀 주세요. 감사합니다. ^^

캐릭터 변경에 관해

0

220

1

Asteroid 생성에 관련해서

0

182

1

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

0

206

1

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

0

268

1

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

0

261

1

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

0

319

1

Destroy 함수 질문

0

407

1

GetComponent 강의 질문

0

339

1

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

0

1906

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

288

1

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

0

259

1

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

0

349

1

해당 부분 업데이트

0

254

1