FC2ブログ

プロフィール

杉野花粉

Author:杉野花粉
富と名声が欲しい俗物だというのに
能力がない!
フラストレーションは溜まっていくばかり!
どうするんだ!?

最新記事

最新コメント

月別アーカイブ

カテゴリ

アクセス数

FreeSpace

DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:未分類
今作ってるゲーム
コミュニオイドについて説明書的なの作りました
早く体験版でも出したいですね

モーメント1
モーメント2
モーメント3
モーメント4
モーメント5
モーメント6
モーメント7
モーメント8
モーメント9
モーメント10
モーメント11
モーメント12

スポンサーサイト
DATE: CATEGORY:未分類
なんと2年近く更新していなかった。
まあ書きたくなったので。

相変わらずゲーム作ってます。
今回は弾幕を作るうえでわかったことがあるので復習。

シューティングゲームの弾の基本は、
自分を狙って撃ってくる自機狙い弾ですが、
その中でも放射状に飛んでくるnWay弾があり、
動かないと当たる奇数弾、動かなければあたらない偶数弾があります。
unityのC#でこれを再現するにはどうしたらいいか。

奇数の7way弾から考えていきます。
ある物体を正確に狙うとき、角度は0になります。
この0を基準として弾を放射していくわけですが、
均等に4度分岐させると、

-12, -8, 4, 0, 4, 8, 12

となります。
考え方としては、
最低値の-12から4度ずつ足していくのがやりやすいのではないかと思います。
この最低値を求めるのが次の文です。

startAngle = -plusangle * Mathf.Floor(way/2);


最低値 = -足していく角度*(way数/2の小数点以下切り捨て)
-12 = -4 *floor(7/2)(=3)
ですね

偶数6way弾4度の場合
-10, -6, -2, 2, 6, 10
になります。

偶数の場合0の位置に弾を発生させてはいけません、
汚い弾幕が出来上がります。
これは少々難しくなります。
数学の苦手っぷりが如何なく発揮されてます。


startAngle = (-plusangle*(way/2))+(plusangle/2);


-10 = (-4*(6/2))+(4/2)

+(plusangle/2)の部分がミソです。
-2, 2 の間の0を飛ばすために2度を足しています。 

SyntaxHighlighterを導入するのに
色々調べて疲れてきたのでちょっとここまでにしたいところです。

これが何やかんやで出来たメソッドです。


void WayShot(int way , float plusangle)
{
float startAngle;
if (way % 2 == 0)
{
startAngle = (-plusangle*(way/2))+(plusangle/2);
print("偶数弾です");
}
else
{
startAngle = -plusangle * Mathf.Floor(way/2);
print("奇数弾です");
}
muku();//相手のほうを向く
for (int i = 0; i < way; i++)
{
quat = Quaternion.AngleAxis(startAngle, Vector3.up);
GameObject Laser = Instantiate(tama, transform.position, transform.rotation * quat) as GameObject;
startAngle += plusangle;
}
}


実行したらこんな感じです
1852.jpg
DATE: CATEGORY:未分類
追記:後で気づいたけどこれ波動拳でした・・・
    にわかですいません


ゲーム制作ですが今コマンド技を実装できたので祝杯代わりに更新します。
あと復習ノート的な感じでも。

前々から理論は頭の中にあったんですが、プログラムに書くとなると、
面倒そうなので避けていました。
しかしそんなことしていたらいつまでたっても完成できないので、
最近取り掛かっていました。

手っ取り早く言うと、
方向キー入力を配列に格納して、
新しい配列の要素同士を比較します。

格ゲー界では入力の方向をテンキーになぞらえて、
ee.png
こんな感じに表記してると思うんですが、
これに則って考えていきます。

5以外のどれかが入力されたときに、
配列の最後にその番号を代入します。
配列の大きさが3だとしたらこのとき前に進む、つまり8が入力されると
{0}{0}{8}になります。

コマンド技を実装するなら現在入力されている数字と、
次に入力されるであろう数字の両方を記憶しなければなりません。

何もしないでいると配列の最後にしか数字が入力されず、
{0}{0}{8}、{0}{0}{2]、{0}{0}{4}、{0}{0}{6}といった感じで、
いつまでたってもコマンドが完成しません。

そこで最後の数字をその前の要素に移し替えます。
foreachを使い、配列の要素に次の要素、つまり+1した要素を代入します。

int a = 0;
foreach (int t in commandBuffer)
{
commandBuffer[a] = commandBuffer[a + 1];
a++;
if (a == 3)
break;
}

プログラム文だけ書いてもわけわかんないですが絵にするとこうです。
eee.png
余計わけわかんないかもしれませんがまあいいです。
絵の通りに入力すると、あの有名な昇龍拳を出すためのコマンドが完成しますが、
実は絵の通りにはなりませんでした。

昇龍をだすならこのif文のどっかに攻撃ボタンを書けば撃てると思っていましたが、
if (syouryuu[0] == 2 & syouryuu[1] == 3 & syouryuu[2] == 6)
前に書いた一文に弱点があり出すことは不可能でした。

commandBuffer[a] = commandBuffer[a + 1];

これです。
実はこれ最後とその前の要素は同じ数字になるため、
昇龍を撃とうと思っても、{3}{6}{6}になり絶対撃つことができません。

ではどうすればいいのでしょうか。
答えは配列を拡張するでした。

ええええ
右2つの要素は同じになるため、最後の要素は入力の受け取り専用にしたところうまくいきました。
これでようやく昇龍が撃てます。

達成感が清々しいです、
記事も同じです、
すごい大雑把ですけど。

配列は面白いですね。
DATE: CATEGORY:未分類
Rewriteが明日放送です。
大学1年の夏、keyファンの友達から感想を語れる人が欲しいと、
貸してもらった思い出のゲームでもあります。
ADVゲームをやるのはこれが初めてで、
のめり込んでしまい、何週間か時間を吸われました。
ちなみにその友達は2~3人攻略して脱落していました。
従来のkeyとは違い泣きゲーではないようだったので、
その友達には合わなかったのかもしれません。

そんな感じの異色作なので、
アニメもどうなるか検討がつきません。

久しぶりにアニメを追うことになりますね。
最後に追ってたのはマイリトルポニーでしたから。
DATE: CATEGORY:未分類
気づいたら半年も放置していたらしい。
近年になって気づいたのだが、私は冬季うつの気があるようで、
暖かくて日射量が増えるこの頃は気持ちが上向きになるのだが、
寒い冬はすこぶる調子が悪くなるのだ。

前回までの記事は冬真っ盛りに書かれたものなので、
予想通りネガティブまっしぐらだ。

対策は主に日光を浴びることらしいので、
10月あたりから意識的に日光浴をしていくことにする。


前回から今回までの主な出来事

・007シリーズをほぼ見終えた、流石50年以上続く映画といったところで全部楽しめた。
・人間椅子のライブに行った。かっこよすぎた。
・御茶ノ水でギターを買い、渋谷でシンセサイザーを買った。
 大量出費
・ついでに渋谷のクラブWOMBで踊ってきた。しかし人が多すぎて脱落。
 道を歩いていると3回ほど客引きに遭った。渋谷怖い。
スプラトゥーンWiiUを買った、面白い。こりゃ売れるわけだ。
・運動再開、ジム通いを始める。
 モテたい、しかし遠回りではないか。まあ体力がつくからいいであろう。

ゲーム開発に着手、基本的な骨組みを作る。
今回一番重要なのがこれだ。
ようやくゲーム制作の足がかりができた。
以下開発中の画面である。
無題
無題21
無題2

完成したら売るという前提で作っているので、
これから宣伝的な感じで紹介していこうと思う。

copyright © TrashBox all rights reserved.
内職☆在宅ワークの最強は?アフィリエイト!. 初心者だってカッコ良いホームページ作るぅ!
Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。