質問: 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移動 }); ```
回答: くまちゃんをクリックした際には上に向かうだけにして、重力(みたいなの)で常に下に引っ張っている状態にして実現してみました。 下記コード内、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(); }; ```