Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- OCR
- JavaScript
- 게임
- cookie
- typeORM
- Dinosaur
- nestjs
- class
- MySQL
- 공룡게임
- 정렬
- AWS
- flask
- GIT
- Nest.js
- MongoDB
- Python
- dfs
- Bull
- jest
- nodejs
- game
- TypeScript
- Express
- mongoose
- react
- Queue
- Sequelize
- 자료구조
Archives
- Today
- Total
포시코딩
javascript - 구글 공룡 게임 구현(2) 본문
728x90
이전 게시글에서 내 캐릭터인 dino 와 장애물인 cactus 를 만들었으니
이제 cactus 가 나한테 달려오게 해보자
단순히 cactus 의 x 을 변경하면 순간이동하게되는거니
프레임마다 움직이게 할거임
https://developer.mozilla.org/ko/docs/Web/API/Window/requestAnimationFrame
function frameAction(){
requestAnimationFrame(frameAction);
}
여기에 아까 밖에 던져뒀던 draw 함수들을 집어넣고
cactus 의 좌표값을 dino 쪽을 향해 오게 할건데
function frameAction() {
requestAnimationFrame(frameAction);
cactus.x--;
// 바닥선
ctx.beginPath();
ctx.moveTo(0, 250);
ctx.lineTo(600, 250);
ctx.stroke();
// 캐릭터,장애물
dino.draw();
cactus.draw();
}
프레임마다 cactus 의 x 값이 줄어들게 하면
이 난리남 ㅋㅋ
잔상이 남는다고 생각하면 되는데
(출처: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=7hu&logNo=220850690452)
ctx.clearRect(0, 0, canvas.width, canvas.height);
프레임마다 샥 지워준 후 다시 그리는 식으로 해결하면 된다.
근데 이 상태론 새로고침 할때마다 이미 게임이 시작하고 있게됨
스페이스 버튼을 누르면 그때서야 게임이 시작되게 해보자
잘 아는 이벤트리스너를 쓸거임
document.addEventListener('keydown', (e)=>{
if(e.code == 'Space'){
frameAction();
}
})
새로고침 후 스페이스를 눌러보면 뭔가 게임 비슷한게 만들어졌다.
다음으론 cactus 여러개가 일정 간격으로 생성되어 나한테 다가오게 해볼거
728x90
'개인프로젝트 > 구글 공룡 게임' 카테고리의 다른 글
javascript - 구글 공룡 게임 구현(6) (0) | 2022.06.22 |
---|---|
javascript - 구글 공룡 게임 구현(5) - Collision detection(충돌감지) (0) | 2022.06.22 |
javascript - 구글 공룡 게임 구현(4) (0) | 2022.06.22 |
javascript - 구글 공룡 게임 구현(3) (0) | 2022.06.22 |
javascript - 구글 공룡 게임 구현(1) (0) | 2022.06.22 |