Closed kthss01 closed 1 year ago
탄막게임 알고리즘 도서를 간단하게 읽어봄 탄 속도, 회전 각도 등이 알고리즘의 핵심으로 보임
기본 화면으로 phaser3 예제를 사용하려고 함 group이 적용된 예제로 bullets group 이걸 쓰도록 하자
예제 사용해서 danmaku alogirthm 구현 환경 구축함
각 발사에 대해서도 확인함 https://labs.phaser.io/edit.html?src=src\physics\arcade\velocity%20from%20angle.js https://labs.phaser.io/edit.html?src=src\physics\arcade\velocity%20from%20angle%202.js
이 2개를 확인해보면 각도에 따른 발사는 아래와 같이 진행
this.physics.velocityFromAngle(cannon.angle, 300, ball.body.velocity);
참고로 시간별로 발사하는건
this.time.addEvent({
delay: 100,
startAt: 100,
repeat: balls.getLength() - 1,
callback: () =>
{
const ball = balls.getFirstDead();
ball.setActive(true);
this.physics.velocityFromAngle(cannon.angle, 300, ball.body.velocity);
}
});
위와 같이 진행함
const cannon = this.physics.add.image(400, 300, 'cannon_head')
.setAngularVelocity(10);
위와 같이 주면 천천히 회전함 참고하자
Phaser.Geom.Line.SetToAngle(line, cannon.x, cannon.y - 50, angle, 128);
위와 같이 하면 가이드라인도 줄 수 있음 -> 이건 다른것도 좀더 처리해줘야함 https://labs.phaser.io/edit.html?src=src\physics\arcade\velocity%20from%20angle%202.js 요거 참고
balls 를 이용해서 총알 표현하는 것도 좋을듯 다양한 색깔로 쏠 수 잇음
각도로 발사하는 것까지 구현함 해당 부분 조금 정리하면 탄막 알고리즘 구현할 수 있는 환경 완성할 수 있을듯
총알을 시간에 따라 발사하는 부분 Bullets 안에서 구현하려 했는데 문제가 있었음 ship 위치 정보가 없어서 구현하지 못함 그래서 MainScene에서 발사하도록 처리하려 했는데 고민해보니까 임의값이니 크게 문제는 안될듯
일단 총알 자동 발사 구현했고 랜덤한 값 받아서 발사되도록 처리함 추후에 탄막이 되도록 처리를 해야하는데 이건 책보고 진행해야할 것으로 보임
용어 정리 https://ko.wikipedia.org/wiki/%ED%83%84%EB%A7%89_%EC%8A%88%ED%8C%85
Danmaku Bullet Hell Shooting Barrage
이런게 있는데 Danmaku 로 하기로 함