[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
余計なことに手を付けまくっているからです(きっぱり)
そんなわけで言い訳終了(?)
その余計なことの成果というのがキーコンフィグです。
一応バージョン1.0ということでここに公開しようかと。
sample_key_config.zip
バグ等見つけましたらコメント欄にでも報告お願いします。
前回、「攻撃関連をつくる」などと予告しましたが、まったく違う事をやっていました。
思いつきで
「キャラが坂道を登れるようにしたらすてきかな~」
と早速挑戦してみました。
簡単にできるだろうと考えていたのですが、これがなかなか思うようにいきません。
最初は、坂のオブジェクトに接触したら斜め方向にスピードを加えてやれ、
と考えていたのですが、登らないどころか坂にめり込む始末。
斜面に当たるオブジェクトの当たり判定をPrecise(正確な辺り判定)にしたのですが、これだと、1ドットの階段が出来上がるだけだったようでして、横に進むと同時に縦にも進めなければならなかったようです。
それを実装してみたところ、妙にカクカク動く。
さらには、下りの時に坂から飛び出してしまうという体たらく。
そんなこんなで三日ほど考えていたところで、先達の知恵を借りようと、YOYOGameのフォーラムをうろうろしてみました。
慣れぬ英語に悪戦苦闘しつつ、サンプルらしきものをゲット。
これを自分の作っているゲームの環境に合わせていろいろいじっているうちに、自然と出来てしまいました。
まあつまるところ、ちゃんと理解して出来たというわけではないわけです・・・
自分なりに理解した大まかなやり方としては、
1.左右の移動の際、移動先の前方、前方上に障害物がないかを調べる。
2.前方上に障害物がなければ普通に前進、有る場合は障害物がなくなるまで縦 に移動させ続ける。
何のこっちゃという方が多数おられそうですのでコードを載せておきます。
if(keyboard_check_direct(global.k_left)) //キー入力があったとき
{
for(i=-xspeed-2;i<xspeed+2;i+=1)
{
if(place_free(x-xspeed,y+vspeed) && place_free(x,y + vspeed + 1))
//障害物がなかった時
{
x -= xspeed;
image_xscale = -1;
exit
}
if(place_free(x-xspeed,y-i))//坂にぶつかったとき
{
if(!place_free(x,y+5)&& vspeed = 0)
{
x -= xspeed;
image_xscale = -1;
if(!place_free(x-xspeed,y-i+5))
{y-=i;}
}
exit
}
}
}
おそらくなのですが三行目のfor文がポイントなのではないかと・・・
ちなみに、このコードで扱っているのは16×16のキャラクターですので、扱うサイズによって数値をいくつかいじる必要があるかもです。
斜面を実装
ここ最近のアクションゲームというやつはジャンプキーを押す長さでジャンプの高さが変わるのが当たり前との事だそうですので、早速実装してみました。
前回までですと
1.キーを押す
2.vspeedに値が代入される。
3.キャラが空中にいる間重力が掛かる。
4.vspeedが0になり落下。
となっていたのですが、今回は3,4の間に
3.5.キーが押されているか?
→yes:vspeedは変化なし。
→no :vspeedに0.45掛け算する。
という処理を加えました。
なぜ掛け算なのかと申しますと、慣性をつけるためです。
0にするとピタッと止まってしまい、大変不自然に見えてしまいます。
ちなみに0.45というのは私の場合の数値ですので、各々調整してみてちょうどいい数値を見つけてみてください。
これでキーの押し加減でジャンプの高さをある程度は調整できるようになりました。
また、ジャンプの上昇中、下降中それぞれでスプライトを変えるようにもしました。
vspeedが-の時は上昇中のスプライト、+の時は下降中のスプライトを表示するようにしています。
あと、上キーを押したときは上向きのスプライト、下キーを押したときは下向きのスプライトが表示されるようにもしました。
これで一通り基本動作が出来るようになりましたので、次回は攻撃関連を追加していけたらと考えております。
いまさら説明するまでもないかもしれませんが、このゲームはアクションアドベンチャーというやつで、今現在私が作りたいゲームとぴったり合っている部分があったりします。
とりあえず、このゲームのキャラの動きなんかをGamemakerで再現していくか、
ということになりました。
とりあえずキャラの動きとして、左右の移動とジャンプを実装しました。
GameMakerには当たり判定を行ってくれる関数があったり、重力(加速度)が変数としてあったりするのでこのあたりはスムーズに作れました。
スプライトは立ち、歩行、ジャンプをとりあえず用意。
右向き分の画像を用意し、右向きのときはimage_xscaleを-1にして対応しています。
実はこの方法を知ったのがつい最近のこと。
それまでは左向き、右向きそれぞれにスプライトを用意していたので手間が倍かかっていました(笑)
とりあえず今日のところは主人公が画面内を歩き回ったり飛びまわったりが出来るようになったというところです。
※左上のメーター類は飾りです
夢枕獏/綾辻行人/椎名誠/北杜夫/スティーブンキング
・ハマったゲーム
R-TYPE/WILD ARMSシリーズ/イースシリーズ/九龍妖魔学園紀/SIREN/ぐわんげ/プロギアの嵐/エスプレイド/エスプガルーダ/式神の城