2006年1月アーカイブ

Windows Vistaのことについて書いてある記事を見つけました。
またしてもFAQ形式でわかりやすいです。

毎日少しづつ進めているアクションゲームの作成。
今日はちょっとだけ作成です。
ブロック・敵の移動方向を変える矢印のゆかを作成
他はイベントの追加・ステージの追加。

続きは読めません "ちょっとだけ作成" »

毎日少しづつ進めているアクションゲームの作成。
今日は昨日つくったワールドマップを少し改良し、ゲーム中でマップを表示するようにしました。

今日はゲームで使う地図を作ってみました。けっこうリアルです。
map1.png

あのベクターさんがオンラインゲーム事業に参入するようです。

SleipnirVer 2.30が公開されました。

HSP3.0で作成中のアクションゲーム。
今日は動かせるブロックを作りました。

ブログを書き始める前のゲーム作りはどうだったのでしょうか?
これからは過去の開発日記のようなものも簡単に書いていきます。
(ほとんどただのメモになってしまいますが・・・)

Let'snoteの春モデル発表が発表されました。

人間になりすますウェブ巡回プログラム
いままでのロボットのように巡回するのではなく、
まるで人間のようにページを取得するウェブ巡回プログラムを公開した人がいます。

このブログにはアクセス解析の機能がないので、
以前私が作ったアクセス解析を一部改良して仮設置しました。
ないとちょっと不便なので・・・

CNET Japanの記事
に興味深い記事がありました。
「Intel MacでWindowsは動くのか」
というもので、FAQとして詳しく書かれています。
法的問題まで書いてあって面白いと感じました。
ぜひ一読してみるとよいでしょう。

前回に作ったところの当たり判定の改良をしました。

holy_lift.png
↑リフトに乗る文鳥

とりあえず、乗れる敵に触ると乗れる(張り付く)
そして、乗ったまま移動することができるようになりました。

holybird_o.png
↑ブロックに乗ってがけを渡る!

今日は風邪のため何もする気が起こらず時間を無駄に過ごしてしまいました・・・。
以下、ひとり言です。

*cal_kakudoのサブルーチンを見てみます。

スペースキーを押すと敵が自機に向けて弾を発射します。
そのときの処理はどうなっているかというと・・・
弾の位置を敵の位置にセットしたあと、次の処理をします。
これにより、弾のx方向の移動量・y方向の移動量をそれぞれ算出します。

//角度計算(弾の移動方向を決める) (重要度:高)
*cal_kakudo
length_x = x - ex // X座標の差を求める
length_y = y - ey // Y座標の差を求める
rad = atan(length_y,length_x) // ターゲットとの角度を求める
dx = double (cos(rad)) * speed // x方向の移動量を計算
dy = double (sin(rad)) * speed // y方向の移動量を計算
return

以下の図のように、とりあえずlength_x・length_yを計算します。
(結果は必ずしも正になりませんがこれでちゃんと動く)

shoot_kaisetsu.png

次に、アークタンジェントを計算します。

suushiki_tan.png
であるので、
この式から座標を使って角度を求められます。

最後に
sin、cosを使って、比率に直します。
自機と敵の距離をzとすれば、
cosθ = length_x / z
sinθ = length_y / z
であるので、敵と自機の距離が離れていても近くても適切な速さが保たれます。

そして、それに適当な速さを掛け算して速さを調節しておしまい。

後はメインループ内でex += dxなどとすれば弾がどんどん動きます。
x,yの比率がうまくいっているので、自機の方に向かって弾が飛んできます。
(自機が動かなければですが)


◆おまけ
メインループ内で毎回
*cal_kakudoを呼び出せば、
誘導弾となります。
ただし、実際ゲームにするときは、
弾が永久に追尾するようにするとプレイヤーにとってつらいので
工夫しましょう。


※このままでは
・当たり判定がない
・スペースキー連打で弾が戻ってしまう
などの問題があるのでそのままではゲームになりません。
これを改良する方法については次回以降で扱っていきます。

今回は、シューティングゲームなどで使えると思われる、敵が自機の方向に弾を飛ばす というような方法のサンプルと、その解説をしていきます。

サンプルソースはつぎのようになります。
※HSP3.0で動作します。
ゲームづくりには基本となる部分です。




◆スクリーンショット
shoot_ss.png
◆解説
*cal_kakudo
というサブルーチンがポイントです。ここでの処理が今回一番のポイントである
弾の発射方向の計算
をしている部分です。

※長くなるので2回目へ続きます・・・

| トラックバック(0)

今日は関東地方でも雪ですね。

少しアレンジしてStardust Collector 通常版 Ver.2.2
をリリースしました。

Movable Typeで「エントリーIDが見つかりません」
となりコメントが投稿できない現象が起こりました・・・。

Weblogを公開

| トラックバック(0)

今日からWeblogを公開しました。
少し前から設置して書いておりましたが、すこし記事がたまったので今日からリンクを貼っておきます。
どの程度の頻度で更新できるか不安ではありますが、少しずつ書いていくので時間があればごらんください。
Weblogは初めてでわからないことも多いですがよろしくお願いします。

私はブログをはじめたばかりなのでまだまだいろいろなことがわからないです。
今日はトラックバックについて調べてみました。

AreaEditor

| トラックバック(0)

今日は本屋さんへいきました。
ブログの本があったので眺めていたら、
AreaEditor
というのが載っていました。

HSP3.0へ移植

| トラックバック(0)

今日は
Stardust Collector 通常版(Normal Version)

HSP2.61からHSP3.0に移植する作業をした。
実はHSP3.0で動くように書き直すのはいつかはしたいと思っていたのです。
今見るとけっこう無茶な処理をしているところもあり、書き直すのは困難を極めた。
(というか普通にめんどうだった。)


さらにせっかくなので、
・画像ファイルをBMPからPNG/GIFにして、HDDの節約になるようにした。
→だいぶ軽くなりました!


・今まで寄付特典として、「寄付してくれた人だけ遊べるステージ」を最初から選べるようにした。
特典ステージの中には難しいステージもあるのでおすすめ。ぜひチャレンジしてもらいたい。
→なぜなら・・・誰も寄付してくれなかったから(笑)
ならこの際、最初から公開してしまうかということで。。。
新しいゲームもそのうち公開することだし。


DirectDrawを使って高速に描画してもらうようにした。
実は今までは使っていなかった。
→が・・・速くならないorz
なんでだ~。今、さらに改良中・・・。


Stardust Collector 通常版 Ver.2.1として、近いうちに完成です。たぶん。

さて、後半部分です。
定義した命令を使って処理を書いていきます。

f_name = "song1.ogg"
再生したいファイルのファイル名を記述します。
ここではsong1.oggを用意して、これを再生することにします。


pm = varptr (f_name)
song1.oggのポインタを取得します。ポインタについては私もよくわからないので、
こうすればうまくいくということだけで詳細は説明はご勘弁を・・・

VoxLoad pm
oggをロードします。先ほどのポインタを使います。

VoxID = stat
VoxLoad関数からの戻り値が必要になるので、statに入っていたものを保存しておきます。これを後で使います。


VoxSetLoop VoxID,10
ループ回数をセットします。必須ではありません。10回ループさせています。

VoxPlay VoxID
これを実行するとはじめてoggが再生されます。


さて、以上で基本的な使い方は終わりです。
DLLに必要な関数が入っているので呼び出し方さえわかれば意外と簡単だったはずです。
これを改良してさまざまなアプリケーション開発に役立ててみてはいかがでしょうか。

最近のブログ記事

HSPでoggを再生してみよう(第2回)
具体的にはどのようにしたらいいのでしょう…
デザイン見本メモ
今日は少し更新・使い方の勉強をしました。…
HSPでoggを再生してみよう(第1回)
今回は、拡張プラグイン(DLL)を使って…