質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

enchant.js

enchant.jsとは、アプリやゲームを簡単に開発できるオープンソースのHTML5+JavaScriptベースのフレームワークです。プログラミング学習にも用いられ、多くの素材やプラグインが用意されています。

Q&A

解決済

1回答

3440閲覧

enchat.js 2段ジャンプ

hana0102

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

enchant.js

enchant.jsとは、アプリやゲームを簡単に開発できるオープンソースのHTML5+JavaScriptベースのフレームワークです。プログラミング学習にも用いられ、多くの素材やプラグインが用意されています。

0グッド

0クリップ

投稿2017/05/08 02:20

Javascript初心者でenchant.jsを使って簡単なゲームを作っています。
くまが同じ位置で走っていて、障害物が右から流れてきたらクリックで垂直ジャンプでかわします。
操作はそのクリックのみ。
やりたいのは、普通のジャンプと着地するまでにもう1度クリックすると、2段ジャンプになるというものです。
2段目のジャンプは1段目のどの高さでクリックしても一定の高さを飛べるようにしたいです。
例えば2段目のジャンプ力は4。
2の高さからクリックしたら6の高さまで飛べる。
4からだと8。
そして同じ高さに着地させたいです。

テストとして現在のサイズは320*320です。
現在下記コードでジャンプ自体はできますが、ジャンプ中に複数回クリックすると回数が蓄積され、
普通のジャンプをクリック回数分繰り返してしまいます。

着地点に関して、下に45px移動...としているので2段飛ばすとおかしくなるのは分かりますが、
全体の座標としての指定の仕方が分かりません。

よろしくお願いします。

var kuma = new Sprite(32, 32); // くまを作ります kuma.image = game.assets['./img/chara1.png']; // くまの画像を設定します kuma.x = 80; // 画面やや左側に配置 kuma.y = GROUND_LINE - kuma.height; // くまの下端を地平線の高さと合わせる(218)
game.rootScene.addEventListener(Event.TOUCH_START, function (e) { // くまをジャンプさせる kuma.tl.moveBy(0, -45, 8, enchant.Easing.CUBIC_EASEOUT)// 12フレームかけて現在の位置から上に45px移動 .moveBy(0, 45, 8, enchant.Easing.CUBIC_EASEIN); // 12フレームかけて現在の位置から下に45px移動 });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

くまちゃんをクリックした際には上に向かうだけにして、重力(みたいなの)で常に下に引っ張っている状態にして実現してみました。
下記コード内、enterframeイベントは常に毎フレーム発動するようだったので、ここで重力を操作しました。

実際試してみたjsコード部分は↓です。

enchant(); window.onload = function(){ var game = new Core(320, 320); game.fps = 15; game.preload("chara1.png"); game.onload = function(){ bear = new Sprite(32, 32); bear.image = game.assets["chara1.png"]; bear.vy = 0; bear.x = 80; // 画面やや左側に配置 bear.y = baseLine; // くまの下端を地平線の高さと合わせる(218) bear.frame = 5; game.rootScene.addChild(bear); //地上かどうか判断する基準値 var baseLine = 80; //重力カウンター var gravity =0; //重力加速度 var Gspeed = 0.5; //ジャンプの最大数 var jumpLimit = 2; //ジャンプをカウントするための変数 var jumps = 0; //↓の中は毎フレーム発動します。 bear.addEventListener("enterframe", function(){ //くまちゃんが空中にいるならッ… if(this.y < baseLine){ //重力が加速しッ… gravity = gravity +Gspeed; //その重力分くまちゃんはッ…下に引っ張られるッ! this.y += gravity; //↓は熊五郎が地上にいる場合 }else{ //重力初期化 gravity = 0; //ジャンプ回数初期化 jumps = 0; //くまちゃんを地上に合わせる this.y = baseLine; } }); bear.addEventListener("touchstart", function(){ //ジャンプ回数がリミットより少ないなら if(jumps < jumpLimit){ //ジャンプボタンを押すたびに重力を一度0にする gravity = 0; //ぴょーん bear.tl.moveBy(0, -45, 8, enchant.Easing.CUBIC_EASEOUT); //ジャンプ回数をカウント jumps = jumps+1; } }); }; game.start(); };

投稿2017/05/11 02:07

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hana0102

2017/05/11 05:27

ありがとうございます! 挑戦してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問