[phina.js] 마리오 같은 적을 무찌르는 효과.
22873 단어 JavaScript게임 개발HTML 5phinatech
개시하다
마리오 시리즈가 대표하는 것처럼 적들이 위에서 밟을 때 무너지는 효과는 액션 게임에서 이미 고정되어 있다.
이번에 적의 붕괴 효과는 피나였다.js로 표현해 봐.
대상을 이해하는 오리진
phina.js의 대상은origin 속성이 있습니다. 지정한 위치, 회전, 확대, 축소의 기준입니다.
Vector2 클래스 형식, 기본값은 (0.5.5) 객체의 중심입니다.
적 붕괴 효과
SccalleY 값을 변경하고 세로로 줄입니다.
// 縦方向に縮小
bugbow.tweener.clear().to({scaleY: 0.1}, 200);
origin의 변경 및 위치 조정
// origin変更
bugbow.setOrigin(0.5, 1.0);
// 位置調整
bugbow.y += bugbow.height / 2;
// 縦方向に縮小
bugbow.tweener.clear().to({scaleY: 0.1}, 200);
끝말
실제로 적들이 궤멸한 팽이 이미지를 준비해 프레임을 전환하는 것이 더 효율적일 수 있다.나는 이번 내용은 어쨌든 한 가지 방법을 고려해야 한다고 생각한다.
샘플 코드
코드 보기
phina.globalize();
// アセット
var ASSETS = {
// 画像
image: {
'tiles': 'https://cdn.jsdelivr.net/gh/alkn203/assets_etc/tiles.png',
'bugbow': 'https://cdn.jsdelivr.net/gh/alkn203/assets_etc/bugbow.png',
},
};
// 定数
var GRID_SIZE = 64; // グリッドのサイズ
// ステージデータ
var STAGE = ['4444444444',
'4000000004',
'4000000004',
'4000000004',
'4000000004',
'4000000004',
'4000000004',
'4000000004',
'4000000004',
'4333333334',
'4000000004',
'4000000004',
'4000000004',
'4000000004',
'4000000004'];
// メインシーン
phina.define('MainScene', {
superClass: 'DisplayScene',
// コンストラクタ
init: function() {
// 親クラス初期化
this.superInit();
// 背景色
this.backgroundColor = 'skyblue';
// グリッド
this.gx = Grid(640, 10);
this.gy = Grid(960, 15);
// グループ
this.objectGroup = DisplayElement().addChildTo(this);
this.setStage(STAGE);
var stone = RectangleShape({
fill: 'gray',
cornerRadius: 10,
}).addChildTo(this);
// 落下
stone.setPosition(this.gx.center(), this.gy.center(-4)).physical.gravity.y = 0.5;
var bugbow = Sprite('bugbow', GRID_SIZE, GRID_SIZE).addChildTo(this);
bugbow.setPosition(this.gx.center(), this.gy.center(1));
// 潰れイベント(1回限り)
bugbow.one('stump', function() {
// origin変更
bugbow.setOrigin(0.5, 1.0);
// 位置調整
bugbow.y += bugbow.height / 2;
// 縦方向に縮小
bugbow.tweener.clear().to({scaleY: 0.1}, 200);
});
this.update = function() {
// 当たり判定
if (stone.hitTestElement(bugbow)) {
stone.remove();
bugbow.flare('stump');
}
};
},
// マップ作成
setStage: function(stage) {
var half = GRID_SIZE / 2;
var self = this;
// マップデータをループ
stage.each(function(arr, j) {
// 文字列を配列に変換
arr.toArray().each(function(id, i) {
var x = self.gx.span(i) + half;
var y = self.gx.span(j) + half;
// 空白以外の場合
if (id > 0) {
// タイルセットからスプライト作成
var elem = Sprite('tiles', GRID_SIZE, GRID_SIZE).addChildTo(self.objectGroup);
elem.setPosition(x, y);
// フレームインデックス指定
elem.frameIndex = id - 1;
return;
}
});
});
},
});
// メイン
phina.main(function() {
var app = GameApp({
startLabel: 'main',
// アセット読み込み
assets: ASSETS,
});
app.run();
});
runstant 프로젝트
Reference
이 문제에 관하여([phina.js] 마리오 같은 적을 무찌르는 효과.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/alkn203/articles/phina-stump-enemy텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)