게임개발 8

godot 10차시

오늘은 캐릭터가 돌에 맞으면 일정 시간 동안 무적을 유지하다가 지정한 시간이 끝나면 다시 돌에 맞게 하는 코드를 작성했어요!오늘은 별로 어려움은 없었지만.. 집중력이 흐뜨러지는.... ~_~ 우선 코드~~~extends Node2Dsignal player_hitconst SPEED = 400const CHARACTER_WIDTH_HALF = 40var healthvar dead = falsevar invincible = falsevar invincible_timer = Timer.new()var invincible_time = 2# Called when the node enters the scene tree for the first time.func _ready(): $AnimatedSprite2D.pl..

레쭈고 godot 2024.10.31

godot 9차시

오늘도 godot 을 열심히 공부했답니닷!~!오늘은 script 코드가 너무 왔다 갔다 했어서 공부하는데.. 많이 헷갈렸어요... T-T 처음에는 player.gd 에 signal player_hit 을 추가 시켜줍니다.player 는 맞았으면 "나 맞았어" 라고 알려주기만 하면 돼요!func hit(): player_hit.emit() on_dead() 그리고 그 함수에서 emit() 을 호출해 줍니다.emit() 은 신호를 보내주는 역할을 해요! 그러면 이제 누군가는 반응을 해야겠죠?이때 반응은 game 이 해 줍니다! 돌 씬이 할 일은 없고, 돌을 뿌려주는 씬도 반응 할 일이 당연히 없으니 game 밖에 반응할 게 없어요!그래서 game 에서 이 함수를 $Player.player_hit.connec..

레쭈고 godot 2024.10.23

godot 8차시

중간고사와 여러 행사로 인해 고도엔진을 몇 주 만에야 들었습니닷.....오랜만에 수업 듣는 거라... 정말 단 하나도 모르겟더라구요....복습을 미리 하고 갔어야 하는 것이지만... 중반부터는 나름 잘 따라갔습니닷. 저번에 Timer 노드까지 추가해 주었는데요~저희가 Timer 를 추가해서 일정 기간 동안 생존 해 있으면 게임이 끝나는 것으로 할 거예요!그러한 방식으로 작동하기 위한 코드가 바로extends Node2Dvar remain_timesfunc _ready(): $GameTimer.start() remain_times = 20func _process(delta): passfunc _on_game_timer_timeout(): remain_times -= 1 if remain_times == 0..

레쭈고 godot 2024.10.20

godot 6차시

너무너무 오랜만이라서 혹시 고도엔진을 잊고 계셨나요.....사실 저도 잊고 있다가 너무너무 오랜만에 수업을 들으니까 어색하면서도 재밌었습니다! 저희가 저번 시간에 돌 씬까지 만들어줬는데요!돌씬은 지금 만들어 주기만 했으니 아직 작동은 하지 않는 상태입니다.하지만 저희는 이 돌이 위에서 아래로 떨어지게 해 줘야 돼요!그래서 등장한 코드가 바로extends Node2Dvar speed = 400func _ready(): passfunc _process(delta): position.y += speed * delta 입니다. 하지만 이렇게 돌이 쭉 일정한 속도로 내려오면 게임이 너무 재미가 없잖아요?!그렇기 때문에 가속도를 지정해 줘서 speed 에 지속적으로 더해 줘야 해요!그럼 speed 의 값은 변하기 ..

레쭈고 godot 2024.09.26

godot 5차시

만약 이렇게 캐릭터를 뷰포트의 가장 하단 중앙에 두고 싶다면 Position x 를 260px, y 를 960 px 로 해주어야 합니닷.왜냐하면 저번에 Viewport 의 가로 길이는 520 px 이었기 때문에 그 절반을 해 주고,세로 길이는 그대로 960 px 을 설정하시면 됩니당. 그럼 이렇게 캐릭터가 안정적으로 하단 중앙에 오게 됩니당.ㅎ3ㅎ 하지만 이대로 실행을 하면 코드를 손대지 않았기 때문에 캐릭터가 방향키를 따라 화면 밖으로 빠져 나가게 됩니다.이것을 방지해야겠죠?!그래서 저희는 540px (오른쪽) 을 넘어가면 그냥 540 이라는 값으로 일정하게 쭉 맞춰주고,만약 0 (왼쪽) 을 넘어가면 그냥 0 으로 처리해줄 것입니다.if position.x >= 540: position.x = 540i..

레쭈고 godot 2024.09.13

godot 4차시

오늘은 드디어 델타 값에 대하여 배웠습니다.delta 값이란 ~ 특정 움직임에 무조건 곱해 줘야 하는 것이에요. 델타 값을 출력한 예입니다. 값이 거의 똑같죠?!그리고 delta 를 곱해주어 코드를 수정해 주었습니당.왜냐하면!!!!!!!!사양이 좋은 컴퓨터와 안 좋은 컴퓨터에서의 물리적인 시간이 같아도 이동하는 양이 다를 수 있기 때문에 사용하는 것입니다!process 는 while 문이 true 일 때 안에서 실행돼요! 그래서 버튼을 누르고 있으면 계속 실행됩니당. 왜냐하면 이 또한 while 문이 true 가 되니까요!!!!!그래서 delta 값을 이용하면 사양과 관계 없이 같은 시간에 같은 이동량을 가질 수 있습니다.최종적으로는 이동된 픽셀량만 같으면 해결되는 것이지요~예를 들면 엄청 안 좋은 사양..

레쭈고 godot 2024.09.05

godot 3차시

오늘은 고도엔진에서 Player 라는 노드를 생성하였어용.처음에 이미지를 넣었는데용~ 처음 이미지를 넣었을 때는 화질이 굉장히 깨져서 나와요!!!이를 바꿔주는 것이 Texture 의 Nearest 인데용 이게 바로 이미지 보간이라는 것인데요!보간은 중앙값을 구하는 방법? 이라고 생각하면 편해요.Nearest 는 가까운 값으로 주변 값을 지정해 줘요 만약 파란색, 빨간색이 있으면 주변을 그와 비슷한 색으로 지정해주는 거예요.Linear 라는 속성도 있는데용 그것은 바로 중앙값으로 주변 값을 채워주는 것이에요. 만약 빨간색과 파란색이 있으면 그 중간값인 보라색으로 주변 값을 설정해 줘요!그래서 실사 이미지를 할 땐 Linear 가 더 좋고, dot 이미지는 Nearest 가 더 좋아요~! 다음 개념인 스프라..

레쭈고 godot 2024.09.04

godot 2차시

고도엔진은 화요일, 목요일 50분 배우는데 시간이 너무 짧은 것 같아 아쉬운 마음이 큽니다.....오늘은 되게 여러 가지를 배웠어요!!!!!!앞으로는 저희는 첫 프로젝트인 똥 피하기 게임과 비슷한 게임을 만들 것입니다! 허허... 먼저 새 프로젝트를 생성해 줬구, 에셋 파일을 전부 다운 받아 주었어요!저희는 휴대폰 화면과 비슷한 뷰포트 화면을 만들어 주고 싶었어요! 요기 Viewport Width와 Viewport Height 의 값을 지정된대로 지정해 줬어요!그래서 실행을 하면 이제 지정된 크기 만큼만 보인답니닷!밑에 Resizable 도 꺼줍니다. 왜냐하면 저희는 화면의 크기를 고정할 것이기 때문에 마우스로 늘리는 건 하지 않을 거예요! 요기 초록선이 y 축, 빨간 선이 x 축, 그리고 파란 선이 V..

레쭈고 godot 2024.08.29