忍者ブログ
「Gamemakerでゲームを作って見よう」 ということで、作業メモっぽい使い方をする予定。 愚痴なんかが多くなるかも・・・
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

好きなヴァンパイアハンターはリヒター=ベルモント。
岩です。こんばんわorこんにちは。

前回の更新からいろいろいじった結果下からすり抜けて乗れる床を実装できました。

拍手

PR
DSLight・・・君が居なくなってから部屋が広くなったよ・・・

DSを修理に出しました。こんばんわ。

前回に引き続き特殊な動作についてです。
・ショートダッシュ
短い距離をダッシュで駆け抜ける(?)という動作です。
方向キーの二回押し、ボタン一つで等ありますが、私は後者で実装してみました。


拍手

おばんです。
昼に見ている人にはこんにちは。
今日、というかついさっき知ったのですが、このブログを見た上にコメントを残そうとしてくださった方がおられたようなのです。

拍手

キャラの基本動作に関してはほぼ固まったので、基本出ない動きというものを作ってみました。

1.二段ジャンプ
空中でもう一回ジャンプ出来るようにしたい!!
ということでやってみました。
まず、ジャンプ回数を表すcount_jumpという変数と、最大ジャンプ数を表すMAX_jumpという変数を作ります。
count_jump=MAX_jump;
MAX_jump=2;
これでMAX_jumpをいじるだけでジャンプ回数をいじることができます。
そして、ジャンプの処理の部分を
if(move == 1 && keyboard_check_pressed(global.k_jump))
{
        vspeed=-jump_speed;
}
から
if(move == 1 && keyboard_check_pressed(global.k_jump))
{
        if(count_jump > 0){vspeed = -jump_speed;}
        count_jump -= 1;
}
とします。
青い部分が追加分です。
ジャンプが実行されるたびにcount_jumpを-1し、0になるまでジャンプさせることができるようにしました。

2.空を飛ぶ
空を自由に飛びたいな~♪
ということで飛ばしましょう(照れ)

やりたいことは
ジャンプボタン押しっぱなしで一定時間浮力を与え続ける
ということです。
コードは長くなる上に飛び飛びになってしまうので省きますが、考え方としては

①ジャンプキーが押しっぱなしになったらboost_flgを1にする。
②boost_flgが1の時、count_boost(浮力を与えられる時間の上限)を減らし続け、vspeedを与える
③count_boostが0以下の時にboost_flgを0にし、vspeedを0にする。
④キャラが着地したらcount_boostを元の値に戻す。

ということをしています。
count_boostはいわばロケットの燃料のようなもので、この値が多ければ、浮いていられる時間が増えます。

3.吹っ飛ぶ
ダメージを受けた時にキャラを吹っ飛ばすという処理です。
まず、ステップイベントに

if(place_free(x+wspeed,y+vspeed))x+=wspeed;

というコードを書きます。
また、クリエイトイベントでは
wspeed = 0;

とします。
この段階ではwspeedによるキャラへの影響は一切ありません。
一方、コリジョンイベントを作ります。
敵にぶつかった場合を想定し、colllision obj_enemy というものにします。
そこに以下のコードを書きます。

    vspeed = -4
    if(other.x-x >= 0)wspeed = -2;
    if(other.x-x < 0)wspeed = 2;

敵が自分より左にいるか、右にいるかで吹っ飛ぶ方向を変えています。(敵と逆側に飛ぶようにしています)
ステップイベントの最初に書いたコードにより、キャラが壁、地面にぶつかることでwspeedが0となるので吹っ飛びも終わります。
これにアラームイベントを組み合わせることで、無敵状態を作ったりもできます。

キャラに関してはロックマンのスライディングのようなものを追加できたらな~
と試行錯誤中でございます。
また、現段階では見せられたもんではありませんが、メニュー画面とポーズの実装がうまくいきそうです。
本日は以上です。


拍手

今回はキャラ情報を表示できるようにしました。

lifebar.jpg




所謂ライフゲージ、ライフバーといわれるものなのですが、現在キャラが装備している武器の情報も表示できるようにしました。
5つの枠を一つにまとめたものをスプライトとして用意し、draw_spriteで記述します。
この際、すでにスプライトを持ているオブジェクトで行うと、本来のスプライトが消えてしまいますので、注意が必要です。
また、ゲージは常に画面の決まった場所に表示されている方がいいでしょうから、表示位置の指定で工夫が必要です。
僕の場合、Viewを使っているので、
x=view_xview[0] + 57
y=view_yview[0] + 3
としています。
view_xview[0]、view_yview[0]はそれぞれviewの中でのx,yの座標を表しています。
こうすることで、常にviewの左上にゲージが表示されるようになります。
ここにライフゲージを表示するわけですが、やってみたらやり方がいろいろと見つかりました。
1.四角形を描く
draw_rectangleという関数で4つの座標指定で四角形を描くことができるます。
一つ目、二つ目の座標で始点のx、y座標を
三つ目、四つ目で終点のx、y座標を指定します。
この三つ目の終点のx座標がポイントでして
始点のx座標 + (現在のHP ÷ 最大HP)×ゲージの最大長さ
で表示することができます。

2.draw_healthbar
Gamemakerにはライフバーを描くための関数があります。
「ならそれを使えよ」
と思われるかもしれませんが、まさにそのとおりw
とはいえ色々試してみたいのが人情というものです。
この関数では表示位置、バーのパーセンテージ、背景色、
最大の時の色、最小の時の色、バーの変化の方向、
背景枠の有無、枠の有無を設定できます。

3.スプライトを使う
僕が現在使っている方法です。
まず、ライフバー用のスプライトを用意します。
サイズは1×8です。
これをつかったオブジェクトを作成しまして、image_xscaleを使います。
image_xscaleはスプライトの横方向の倍率を表すもので、この値を変更することで画像を横に引き延ばすことができます。
そこで先ほどの1×8の画像の倍率を現在のライフの値に合わせて変えていきます。
 image_xscale = (現在のHP÷最大HP)×最大の長さ
とすることで画像が現在の体力に合わせて伸び縮みします。
この方法の利点はグラデーションやアニメーションのような表現をライフバーに持たせることができるということです。

他にも縦横比を利用した表現などいろいろ試してみましたが、現在はスプライトを使う方法で安定しています。

拍手

[1]  [2]  [3]  [4]  [5]  [6
アクセスカウンター
プロフィール
HN:
性別:
男性
趣味:
読書・ゲーム
自己紹介:
・好きな作家
夢枕獏/綾辻行人/椎名誠/北杜夫/スティーブンキング
・ハマったゲーム
R-TYPE/WILD ARMSシリーズ/イースシリーズ/九龍妖魔学園紀/SIREN/ぐわんげ/プロギアの嵐/エスプレイド/エスプガルーダ/式神の城
カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
ブログ内検索
最新コメント
[04/30 dean]
[04/29 管理人]
[04/29 dean]
[04/08 管理人]
[04/07 dean]
忍者アナライズ
バーコード
フリーエリア
Copyright (C) Gamemakerでも使ってみる

Template by あでる / Material by 素材くん「無料WEB素材屋」 / 忍者ブログ [PR]