kthss01 / HHP_DodgeGame

HangHaePlus Coding Athletics (코육대) Dodge game
MIT License
0 stars 0 forks source link

Player init 및 기본 조작 #4

Closed kthss01 closed 1 year ago

kthss01 commented 1 year ago

플레이어 클래스 만들고 화면에 보여주고 조작 가능하도록 처리하기

kthss01 commented 1 year ago

이슈 Player 클래스로 만들 때 참고 예제는 Phaser.Physics.Matter.Sprite를 상속 받아 쓰고 있음 나는 Matter가 아니라 Arcade를 쓰고자하는데 다른 것을 상속받는지 알아봐야할듯

kthss01 commented 1 year ago

https://photonstorm.github.io/phaser3-docs/Phaser.Physics.Arcade.Sprite.html

Arcade.Sprite 도 있음

kthss01 commented 1 year ago

ArcadeEntity 로 하나 만들어서 사용하기로 함 그게 관리하기 편할거 같음

kthss01 commented 1 year ago

스프라이트 불러오는거에서 시간이 조금 걸리고 있음

아무 스프라이트나 일단 쓰게

보트 스프라이트 잘라서 이미지 올림

추후에 애니메이션 작업이 필요해보임

kthss01 commented 1 year ago

화면에 그리는 것은 성공함

Image

kthss01 commented 1 year ago

기본조작 동작시 matter는 velocity를 설정해주는데 arcade는 어떻게 하는지 확인이 필요함

kthss01 commented 1 year ago

setAcceleration(x [, y]) 이걸로 동작하는듯

rotate도 조금 다른듯 setAngularVelocity(value)

In Arcade Physics, bodies cannot rotate. They are always axis-aligned. However, they can have angular motion, which is passed on to the Game Object bound to the body, causing them to visually rotate, even though the body remains axis-aligned.

kthss01 commented 1 year ago

acceleration을 안가지고 있음 애초에 matter도 body에 velocity를 가지고 있는건데 뭔가 잘못 알고있는게 아닌가 싶음 디버깅해보자

kthss01 commented 1 year ago

body에 acceleration을 가지고 있어야함 (그렇게 구현되어있음) -> 그러나 body가 null임 뭔가 넣어주는게 잘못되었는지도

kthss01 commented 1 year ago

예제 찾아보니 arcade도 velocity 처리하고 있음

https://labs.phaser.io/edit.html?src=src\physics\arcade\100%20world%20bodies.js

kthss01 commented 1 year ago

https://www.html5gamedevs.com/topic/22642-why-is-my-extended-sprites-body-null/

sprites 의 이미지 로드하면 physics 는 없음 body를 넣어줘야한다는 얘기라고함

Sprite = image

Body = physics.

https://labs.phaser.io/edit.html?src=src\physics\arcade\extending%20arcade%20sprite.js 요거 참고해서 진행해야할듯

kthss01 commented 1 year ago

해당 사항 참고해서 아래와 같이 physics도 추가함 다른 방법도 있다고 함

https://labs.phaser.io/edit.html?src=src\physics\arcade\extending%20arcade%20sprite.js

        //  You can either do this:
        scene.add.existing(this);
        scene.physics.add.existing(this);

        //  Or this, the end result is the same
        // scene.sys.displayList.add(this);
        // scene.sys.updateList.add(this);
        // scene.sys.arcadePhysics.world.enableBody(this, 0);
kthss01 commented 1 year ago

간단하게 화살표키를 이용해서 입력할 수 있도록 처리함 필요하면 wasd로도 수정가능함