More Related Content
Touhou Project on JavaScript 日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた 日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます What's hot (20)
Unity×HTMLで作るiPhone オンラインゲーム開発事例 CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話 Make TypingGame in JavaScript Web frontend performance tuning Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜 早く家へ帰るための
Grunt入門
[+gulp紹介] デザイナーさんでもできる Browsersync からはじめる作業効率化 Introduction to Favmemo for Immature Engineers デザイナーさんでもできる Browsersync からはじめる作業効率化・春 BuddyPressの導入からカスタマイズまでの日記 Viewers also liked (20)
Mithril - 軽量/高速なMVCフレームワーク レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする 法規制後でも個人で楽しむドローン入門 2016・秋 GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」 とらのあなエンジニア採用イベント 2017年2月9日 Spark Streamingで作る、つぶやきビッグデータのクローン(Hadoop Spark Conference Japan 2016版) [Anitech] ITでアニメを考える、「ShangriLa Meetup5」 ラブライブ!サンシャイン!!入門書 (A4 縦向き) せいまち〜聖地探訪に出会いを求めるのは間違っているだろうか〜 Mobage を支える Ruby の技術 ~ 複数DB編 ~ Cookpad Summer Intern 2015 - Programming Paradigm Similar to JS と Canvas で作るシューティングゲーム (11)
Html canvas shooting_and_performanceup Canvas de shooting 制作のポイント Unity Introduction from 2D shooting game. 2012 03-03-titanium plusquicktigame2d enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン enchant.js meetup Tokyo vol.2 Tutorial Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン JS と Canvas で作るシューティングゲーム
- 2. 自己紹介
• HN: さい
• Twitter: @sairoutine
• Webアプリケーションエンジニア
• 東方Projectが大好きです
• JavaScript 1年生
- 12. 基本的な流れ
Game.prototype.run = function(){
// シーン更新
this.scenes[ this.state ].run();
this.scenes[ this.state ].updateDisplay();
// SEを再生
this.runPlaySound();
// 経過フレーム数更新
this.frame_count++;
// 押下されたキーを保存しておく
this.before_keyflag = this.keyflag;
// 次の描画タイミングで再呼び出ししてループ
requestAnimationFrame(this.run.bind(this));
};
- 13. シーンの流れ
StageScene.prototype.run = function(){
// 自機
this.character.run();
// 自機弾
this.shotmanager.run();
// 敵
this.enemymanager.run();
// 敵弾
this.bulletmanager.run();
// アイテム
this.itemmanager.run();
// エフェクト
this.effectmanager.run();
// ボム
this.bombmanager.run();
// アイテムと自機の衝突判定
this.itemmanager.checkCollisionWithCharacter(this.character);
// 自機弾と敵の衝突判定
this.shotmanager.checkCollisionWithEnemies(this.enemymanager);
// 敵と自機の衝突判定
this.enemymanager.checkCollisionWithCharacter(this.character);
// 敵弾と自機の衝突判定
this.bulletmanager.checkCollisionWithCharacter(this.character);
- 14. キーボード入力①
// キー押下
Game.prototype.handleKeyDown = function(e){
this.keyflag |= this._keyCodeToBitCode(e.keyCode);
e.preventDefault( ) ;
};
// キー押下解除
Game.prototype.handleKeyUp = function(e){
this.keyflag &= ~this._keyCodeToBitCode(e.keyCode);
e.preventDefault( ) ;
};
- 15. キーボード入力②
// 指定のキーが押下状態か確認する
Game.prototype.isKeyDown = function(flag) {
return this.keyflag & flag;
};
// 指定のキーが押下されたか確認する
Game.prototype.isKeyPush = function(flag) {
// 1フレーム前に押下されておらず、現フレームで押下さ
れてるなら true
return !(this.before_keyflag & flag) && this.keyflag & flag;
};
- 16. 当たり判定
// オブジェクトとオブジェクトの衝突判定を行う
ObjectBase.prototype.checkCollision = function(obj) {
if( this.inCollisionArea(obj.getCollisionLeftX(), obj.getCollisionUpY()) ||
this.inCollisionArea(obj.getCollisionLeftX(), obj.getCollisionBottomY()) ||
this.inCollisionArea(obj.getCollisionRightX(), obj.getCollisionUpY()) ||
this.inCollisionArea(obj.getCollisionRightX(), obj.getCollisionBottomY())
||
this.inCollisionArea(obj.x, obj.y)
) {
return true ;
}
return false ;
};
- 17. 敵/敵弾の動きを記述する
var __enemyBulletsParams = [
[
{
'v': { 'r': 5, 'theta': 165, 'w': 0, 'ra': 0.1, 'wa': 0, 'raa': -0.01, 'rrange': { 'min': 2 } },
},
{
'v': { 'r': 5, 'theta': 135, 'w': 0, 'ra': 0.1, 'wa': 0, 'raa': -0.01, 'rrange': { 'min': 2 } },
},
{
'v': { 'r': 5, 'theta': 105, 'w': 0, 'ra': 0.1, 'wa': 0, 'raa': -0.01, 'rrange': { 'min': 2 } },
},
{
'v': { 'r': 5, 'theta': 75, 'w': 0, 'ra': 0.1, 'wa': 0, 'raa': -0.01, 'rrange': { 'min': 2 } },
},
{
'v': { 'r': 5, 'theta': 45, 'w': 0, 'ra': 0.1, 'wa': 0, 'raa': -0.01, 'rrange': { 'min': 2 } },
},
{
'v': { 'r': 5, 'theta': 15, 'w': 0, 'ra': 0.1, 'wa': 0, 'raa': -0.01, 'rrange': { 'min': 2 } },
},