enchant.js와 tmlib.js를 사용한 게임 제작 프레임 워크 "enforce"당 판정 제어

이 섹션에서는 "game01"이라는 디렉토리 내에서 작업하고 있다고 가정합니다.

스프라이트 당 판정에 대해



게임 등에서 캐릭터끼리의 당 판정을 취하는 것은 많이 사용됩니다.
당 판정은, 통상은 스프라이트 표시로 사용하고 있는 화상의 구형으로 판정됩니다.


그러나, 이것으로는 그림의 크기가 그대로 게임의 난이도가 되어 버려, 게임 밸런스를 취하는 방법이 어려워져 버립니다.
enforce에서는 생성된 객체의 당 판정은 지정된 이미지의 크기(width, height)로 취하지만 멤버 변수의

콜리더

로 오브젝트를 설정하면, 설정된 오브젝트의 스프라이트 사이즈로 당 판정이 취해집니다.
보통의 곰이라면 32x32에서 충돌 판정이 취해집니다만 8x8의 이미지를 사용한 오브젝트를 생성해, 그것을 collider로 설정하면 당 판정은 그 8x8의 스프라이트로 취해지므로 난이도가 낮아집니다( 반대로 높을 수 있습니다).


"collider"로 설정된 객체는 자동으로 부모 객체를 따라갑니다.
"collider"로 설정된 객체의 멤버 변수 "offsetx"와 "offsety"는 상위 객체의 표시 위치 차이가 됩니다.
오브젝트가 가지고 있는 좌표치는 스프라이트의 중심이므로, 부모 오브젝트의 중심으로부터 어느 정도 떨어진 위치에 「collider」를 표시할지 지정할 수 있습니다.
removeObject()로 부모 객체를 삭제하면 "collider"객체도 자동으로 삭제됩니다.
「isIntersect()」와 「isCollision()」는 이 「collider」로 당 판정을 실시합니다.

예를 들어, 자기의 클래스의 「constructor」에 아래와 같은 처리를 추기합니다.
        collider = addObject
            image: 'collider8x8'
            x: @x
            y: @y
            width: 8
            height: 8
            animlist: [
                [100, [0]]
            ]   
        @collider = collider

그러면 자기의 당 판정은, 자기에 설정되어 있는 스프라이트가 아니고, 「@collider 」에 설정되어 있는 스프라이트 「collider8x8」로 행해집니다.

enforce 자습서 목록

좋은 웹페이지 즐겨찾기