ラベル 2D開発 の投稿を表示しています。 すべての投稿を表示
ラベル 2D開発 の投稿を表示しています。 すべての投稿を表示

2023年5月2日火曜日

ChatGPTでゲームを作ってみる!


おはこんばんにちは!ギルガメです! すごくすごく久しぶりの投稿になります。


今世界で話題のChat GPTを使って簡単にゲームを作りたいと思います!

Chat GPTを触ってみたところ。。すごい。。凄すぎる!

まずChat GPTで簡単な質問でゲームを試しにUnity3DのC#で作ってみることにしました。
Chat GPTに「Unity3Dで簡単なゲームをC#コードでお願いします」って投げてみたところ、PONGゲームの紹介やコードがババっと回答をいただきました。

すごくわかりやすく、コードもC#でボールやパレットなどのスクリプトも丁寧に説明してくれました。

また対戦相手も必要なので敵のAIのスクリプトも頼んでみたら。。一瞬でできました。
こんなに簡単にAIも作れてしまった。。いい世の中だ。生きててよかった笑

早速教えてもらったコードを紹介していきます。

まずはボールのスクリプトになります。

using UnityEngine;

public class Ball : MonoBehaviour
{
public float speed = 10f;

private Rigidbody2D rb;

void Start()
{
rb = GetComponent<Rigidbody2D>();

float angle = Random.Range(-45f, 45f);
rb.velocity = new Vector2(speed * Mathf.Cos(angle), speed * Mathf.Sin(angle));
}

void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "Paddle")
{
float y = (transform.position.y - col.transform.position.y) / col.collider.bounds.size.y;
Vector2 dir = new Vector2(1, y).normalized;
rb.velocity = dir * speed;
}
else if (col.gameObject.tag == "Wall")
{
rb.velocity = new Vector2(rb.velocity.x, -rb.velocity.y);
}
}
}

次にプレイヤーが動かすスクリプトになります。

using UnityEngine;

public class PlayerController : MonoBehaviour
{
public float speed = 10f;

private Rigidbody2D rb;

void Start()
{
rb = GetComponent<Rigidbody2D>();
}

void FixedUpdate()
{
float vertical = Input.GetAxis("Vertical");

Vector2 movement = new Vector2(0, vertical) * speed * Time.deltaTime;
rb.MovePosition(rb.position + movement);
}
}

そして敵AIのスクリプトです。

using UnityEngine;

public class AIController : MonoBehaviour
{
public Transform ball;
public float speed = 10f;

private Rigidbody2D rb;

void Start()
{
rb = GetComponent<Rigidbody2D>();
}

void FixedUpdate()
{
if (ball.position.y > transform.position.y)
{
Vector2 movement = new Vector2(0, 1) * speed * Time.deltaTime;
rb.MovePosition(rb.position + movement);
}
else if (ball.position.y < transform.position.y)
{
Vector2 movement = new Vector2(0, -1) * speed * Time.deltaTime;
rb.MovePosition(rb.position + movement);
}
}
}

この3つのスクリプトだけである程度は遊べるPONGゲームになる・・

2Dでプロジェクトを立ち上げてスフィアのオブジェクトにBallのスクリプトの付与します。
パレットもいい形のものにPlayerController、そして同じ形のパレットにAIControllerを付与します。

あとは細かいところは壁を作って、バウンドするようにPhysics Material 2Dを付与させて。ボールを位置を真ん中に設置して完了になります。

簡単に作っているのでデザインなどはありませんが下記のように遊べるようになります。



Chat GPTでコードに詳しくなくてもなくてもゲームが作れそうですね。。
難しいコードも簡単に教えてくれるのでランダムダンジョンの生成など、敵AIの細かい動きなどもできそうなので試していきたいと思います。

2020年8月1日土曜日

Steamに向けて「ギルガメジャンパー」リリースまでの開発 #10



おはこんばんにちは!ギルガメです!

今回は宝石「サファイア」のかけらを集める新しいステージの開発の進歩になります。また新しいアイデアが浮かんだので、ずっとバウンドしながら進んでいくステージからフィールドを回転させながらステージを進めていくギミックを思い出したので実装してみました。

スクリプトはこちらになります。


こちらを回転用のオブジェクトに追加します。このスクリプトはプレイヤーが触れたときにトリガーが発動するようにしています。スクリプトにはあらかじめ回転してほしいフィールドと角度を設定します。トリガーが発動したときにフィールドのTransition.rotationを回転してほしい角度をアニメーションでなめらかに動くようにしました。RotationのアニメーションにはQuaternion.Slerpを使います。これを覚えておくといろんなところで活用できるので役にたちます。

テスト!

こんな感じでフィールドの回転をいかしてかけらを
集めるステージになります。

修正は回転させるオブジェクトは一度きりで、触れると消えるようにします。
またフィールドの回転が終わるまではプレイヤーは動けないようにしました。またあたり判定も一時的にけします。フィールドのあたり判定を避けるためです。

このステージは回転と時空でステージを転々と移動しながら進んでいく仕様にしようと思います。またおまけステージで暗闇ステージも作ろうと思います。

これで第三ステージもこれで形になったので、進めていきます!

2020年7月31日金曜日

Steamに向けて「ギルガメジャンパー」リリースまでの開発 #9



おはこんばんにちは!ギルガメです!

リリースに向けて進めているうちにアイデアが色々変わったりして、改修をしているうちにかなり時間を使ってしまいました。まず変わった部分ですが、ステージの少なさに疑問があったので、宝石をかけらに分けて、宝石のステージ事に3つのステージを作成することにしました。この変更により各ステージのセーブデータの保存の改修、UIの改修を行いました。

UIに関してはギルガメがデザインした枠を使って作成して、実際に使ってみたところ・・しょぼかったです・・なので、アセットでフリーですごくお気に入りのUIがあったので、そちらを使わせていただきました。

ちなみにこれがギルガメがデザインした枠を使って作成したものです。
クリアしたステージは星がつくのですが・・何か使ってみて気に入らなかったです。

これでは納得しなかったため、アセットを探してみたところ、無料で前に使っていたUIがあったので、ちょっとこれを使ってみたところ、かなり満足な出来になったので、これでいこうと決めました。

ちなみに使ったアセットはこちらです!

「Simple UI & icons」

-シンプルな2D UIとアイコン。
-キュートでラウンド感のあるUI
-10個のボックス、11個のボタン、10個のアイコン、その他のpngファイルに分類されています

リソースの活用方法のスクリーンショットをご覧ください。
ゲーム、アプリ、好きなものを使用してください。
-1920 * 1080に最適化されています
-背景画像は含まれていません。

こちらから詳細が確認できます。

無料ではありますが、かなりの種類があるのでこれ一つでまとまったUIを作成可能です。
本当に助かりました。時間の短縮にもなりました。ゲームがドット絵なので、ドット絵のUIで統一しようかと思いましたが、これはこれでいいと思いました。

かなりリリースまで近づいてはきましたが、最終ステージを作成していきます!

2020年7月22日水曜日

Steamに向けて「ギルガメジャンパー」リリースまでの開発 #8



おはこんばんにちは!ギルガメです!

Steamのためにリリースするゲームの開発進歩!今回はストーリーっぽくするために会話シーンのUI を改修しました!これでちょっとはリリースしても恥ずかしくないかも(笑)

最近ドット絵はウェブアプリ「Pixelart」でドット絵を打っていましたが、やはり使いにくい部分がありました。こんな機能があったらいいのになと思っていたら、SteamでASEPRITEというソフトがあったので、さっそく購入して試してみたところ・・神ソフトでした。ピクセルパーフェクトという機能があり、スムーズにピクセルを打っていけるのでものすごく使いやすかったです。

ASEPRITEという神ソフトはドット絵を打ちました。
ものすごく役にたつツールが沢山あります。
何よりとても使いやすいです!


今回はUIの改修のため、このゲームのストーリーの登場人物が二人だけなので、その二人をさっそくASEPRITEを使ってデザインしました。

主人公「ギルガメ」

神殿を守る妖精「シルフ」

こちらのふたつを会話シーンのために作成しました。また会話シーンのためのスクリプトも画像いれて、見せたりするオプション、右か左に表示するためのオプションなどをついかしました。

シルフとの会話シーンもこのようになりました。
また少し調整が必要かも。

会話シーンの改修も思ったようにできたので少し満足です。新しいステージの開発のほうもちゃくちゃくと進んではいますが、また違うアイデアが浮かんだので、ステージの方も増やす方向で進めていくことにしました。難易度が追加する予定なので、宝石の各ステージは3つずつ追加します。ちょっとリリースまでは時間がかかりそうではありますが、ビジョンが前より良くなったので、頑張ります。



2020年7月20日月曜日

2Dスクロールゲーム開発日記 #18



おはこんばんにちは!ギルガメです!

一週間チャレンジやSteamのリリースにリソースを使って、なかなかこちらの2D開発日記がすすんでないので、ちょっと面白そうなので試してみたかったことを実装しました。

ギルガメは英雄ギルガメッシュに憧れています。なのでちょっとかっこいいものを実装したいと思い、「必殺奥義」的なものを考えました。FGOの英雄ギルガメッシュが使う技がものすごくかっこいいので、そちらを参考に奥儀を実装しました。

まずはどんな奥儀なのか・・ざっくり説明すると無数の時空から沢山の武器がでてきてターゲットにホーミングするという奥儀です。ものすごくざっくりです。

まずはスクリプトを作ります。

奥儀のスクリプトです。
ougi.cs

これをホーミングしたいオブジェクトに追加します。ギルガメの場合は時空からでてくる剣に追加しました。こちらはそのオブジェクトが作成されたときに時空からでてくるモーションから入ります。その後に敵の場所を取得します。この場合はギルガメの範囲内にいる敵をロックオンします。もしロックオンの場所にいない場合はそのオブジェクトはここでそのまま消滅します。次に敵をロックオンできた場合は敵の場所にアングル(照明)を合わせます。これがまたかっこいい・・ここは「Quaternion.Slerp」を使い、アングルを合わせる時のなめらかなモーションを作ります。ここは少し難しかったです。そのまま発射してもいいかなと思ったのですが、このアングルを合わせるだけで印象が変わるので、これは必須でした。最後に発射です!

まずアングルを合わせないでそのまま発射の場合です。
これだと物足りない・・地味に感じる・・

次にアングルをあわせるバージョン!
アングルを合わせるのでカッコよさが追加!
こっちは断然いい!敵が動いていてもアングルを合わせるようになっているので、そちらも見どころです!

最近はリリースのことばかり考えていて、ちょっとモチベーションが下がり気味だけど、限られた時間の中でどれだけできるのか、もうちょっと考えないといけないです。気持ちの切り替えがうまくできない・・旅行したいけど、はやく普通に外に出かけれるようになってほしいです。

新しいステージの方がんばろう!


2020年7月15日水曜日

Steamに向けて「ギルガメジャンパー」リリースまでの開発 #7



おはこんばんにちは!ちょっとギルガメのデザイン能力に自信がなくなってドット絵を打ちながら上達に時間を使っているギルガメです。

デザインに自信がつく方法をググっていたら、ドット絵の場合はドット絵を考えながら打つほど上達するとのことで、足りないのはたくさん打つことなのかなと思います。これはドット絵に限らず、全部の分野にいえることだけど、これを実行することが難しいよね・・

さておき・・ドット絵をばかり打ってるとゲーム開発の方が進まないので、ドット絵を打ちながら「宝石エメラルド」のステージにギミックがないことをずっと気になっていたので、新しいギミックを考えていました。

アッ!「宝石エメラルド」のステージは自然がモデルなので、「風」が浮かびました。風でできることはその風のゾーンに入ると風の力で動きが制限されるというギミックです。これは面白そう!問題はそれを実装できるかどうか・・

なのでアイデアを頑張って実装してみようと思います。2Dには「Area Effector2D」というものがあります。これが使えそう!こちらの設定をしていきます。

チェックを忘れると発動しないので忘れずに!
Force Magnitudeで風の力を調整できます。

スクリプトは必要ないところがすごく楽です。これでテストしてみたところ、うまくいきました!でもこれだけだとプレイヤーはどこに風があるかわかりません、いきなりジャンプしたのに押し戻されるとバグとしか思えない・・これを解消するには風があるように「見せる」必要があります。思いついたアイデアはパーティクルで葉っぱを風の方向に揺らすことです。さっそく実装してみよう!

葉っぱのデザインを用意してマテリアルを作成します。
シェーダーはMobile/Particle/Alpha Blendedを使います。

これをパーティクルのRenderのところにマテリアルを追加します。

できた!

かなり思っていたようにできたので満足!
これはテストで風が強すぎるけど、面白そうなところに設置していこうと思います。

これでギミックのなかった「宝石エメラルド」のステージは面白くなるはずです。今作成中のステージに力はいりすぎた気もするけど、こうなると最後のステージもちょっと何かしらギミック考えないと・・開発とデザインの強化を頑張ります!

結構いろんなドット絵を打ったから、そちらも見てもらえるようなページも作成しようかな。



2020年7月11日土曜日

Steamに向けて「ギルガメジャンパー」リリースまでの開発 #6



おはこんばんにちは!DBDで生存者ランク7から中々上がらないギルガメです!

新ステージを開発中に色んな新しいものを追加したいということで、横スクロールの即死&やり直しのためのギミックを実装しました。

まずは落ちたらそくチェックポイントからの「溶岩の沼」になります。こちらは簡単にピクセルアートで溶岩のような波をつくりました。

こちらの波をアニメーションで左右に動かすことで
溶岩に沼っぽく表現しました。
アニメーションはスクリプトではなくAnimatorで追加しました。
便利・・

さっそくアニメーションを付けた溶岩の沼をテスト!

動きはシンプルでちょっとランダムの速さにしました。

せっかく溶岩の沼をつくったので、この溶岩の沼からなにか出てきてほしいと思い、溶岩といえばファイアボール!溶岩の沼からいきなファイアボールが出てくるギミックを追加します。まず最初にファイアボールのデザインとスクリプトを作ります。

FireBall.cs


SpriteRendererにデザインをセットして上記のスクリプトを追加します。スクリプトは簡単にY軸に力を加えてオブジェクトを上にはねさせてる感じです。そこから重力で自動的に落ちてきます。その動きでY軸が落ちてくるときに画像をFlipして落ちてきているように見せます。このままでもいいのですが、すこしでも派手さが欲しい場合はパーティクルを追加してみるといいです。ギルガメはすごくシンプルなパーティクルを追加しました。

さっそくテスト!

先ほど作ったファイアボールを5秒ごとに再生しています。
これでプレイヤーはタイミングをみて進めないとなので、慎重になるかと。
あたれば即死・・怖い!

「宝石ルビー」のステージも少し進歩しました。まだ「宝石サファイア」のステージも作らないとだから、リリースまでかかりそう・・

なにもしなかったら進まないし、とにかくできることをコツコツ進めていきます!


2020年7月9日木曜日

Steamに向けて「ギルガメジャンパー」リリースまでの開発 #5



おはこんばんにちは!ギルガメです!

最近ちょっと中々プログラミングに集中できない・・コロナの感染者数がなかなか減らない、減らないどころがどんどん増えてるので不安ばかりです。正直ちょっと旅行して頭をリラックスしたいけど、収まるまで待った方がいいよね。ギルガメは気分の切り替えはすごく大事にする方なので、ちょっとなにかできないか考え中です。

とはいえ、開発を怠けるわけにもいかないので、プログラミング開始!

今回は新しいステージ、宝石「ルビー」のかけらを集めるステージを作っていきます。まだまだたくさんあるアイデアから時間がかからないものから実装していきます。まずこのステージは宝石「エメラルド」は縦スクロールですが、これは横スクロールにします。縦スクロースは落ちていくたびにやり直しではありますが、この溶岩ステージはチェックポイント付きの落ちればチェックポイントからやり直しの鬼級に難しいステージにします。難しいステージといってもちょっと簡単に作ります。さすがに難しいとプレイヤーが離れていくかも。

まずは・・デザインを作っていきます。前回はパーツごとに作りましたが、今回はマップごとに作りました。こっちの方がものすごく効率がいいことが分かった・・。まずはバックグラウンド用のデザインを簡単ではありますが、ちゃちゃっと作りました。

ここで前から実装したかったアイデアの一つを試してみました。

暗闇モード!

ステージは突然暗闇になります。ここで新しいモードが、プレイヤーの周りだけ見えるようになります。これにより遊んでいるプレイヤーは慎重に動かなければなりません。また記憶能力も試されるステージになります。プレイヤーの周りを確認して記憶して、どう進めるか考えて、かけらを集めてクリア!

こんな感じになりました!
周りのみ見ることができるので難易度やばいかも・・

こういう要素とかゲームの幅をさらに広がるので、どんどん実装していきたいと思います。あとは頑張ってデザインをもっとよくしないと・・なかなかやる気が・・デザインやってくれる人いないかな。

このステージのBGMやSE、また違うギミックも考えているので、頑張ります!

2020年7月8日水曜日

Steamに向けて「ギルガメジャンパー」リリースまでの開発 #4



おっはーこんばんにちーわ!DBDにはまって、サバイバーランク8までいきましたギルガメです!

新しいステージを作成しようと思っていたのですが、ゲームとしてクリアしたときの画面やタイムのセーブができていなかったので、そちらに集中して実装しました。

ステージのクリア条件は宝石のかけらをすべて手に入れることなので、すべて手に入れた瞬間にクリア画面を表示します。クリア画面には宝石の画面と名前とクリアのテキストを表示して、前回のタイムがある場合はクリア時のタイムを比較して前よりクリア時間が短い場合はクリアタイムを更新します。

そのクリアタイムをプレイヤーはどこで確認できるか迷っていたのです、結局ステージのセレクト画面にしました。ステージをクリアしたところは宝石に色が付きます。またその宝石にマウスを近づけることでクリアタイムを表示できるようにしました。

マウスを宝石に近づけています。これでタイムの確認ができます。
全体のUIも考えていたのですが、こっちがいいかな・・

また世界中の人に遊んでもらえるように言語も切り替えもできるようにスクリプトを変えています。これがすこし厄介でした。初めてではあるのですが、今回は日本語、英語、スペイン語と中国語でリリースできればと思います。Google Translatorがちゃんと略してくれることを願います・・!

着々を進めてはいますが、気になるのはこちらのバージョンを更新したときにセーブがそのままかどうかが気になる。

がんばろう・・リリースしたい。

2020年7月7日火曜日

Steamに向けて「ギルガメジャンパー」リリースまでの開発 #3



おはこんばんにちは!ギルガメです!

前回のアイデアがやっぱり面白そうだったので、今回はそのアイデアを実装しました。前までのステージのクリア条件はステージの最上階までいって、宝石をゲットして終わりでしたが、新しいシナリオを追加しました。シナリオはソンブラ(影)という組織に宝石を砕かれ、それぞれの砕かれた宝石を集めるためにギルガメは妖精を手伝うことにしました。

このシナリオのように、ステージに砕けた宝石のパーツを設置して、プレイヤーはその宝石を集めることでステージをクリアできます。

ゲーム画面の左上にステージ事に集める宝石が確認できます。
また宝石のかけらを手に入れるたびに手に入れたかけらに色がつくので
足りないかけらを確認できます。

またゲームとして考えないといけないのは、セーブになります。今回のプレイヤーのセーブはPlayerPrefsを使ってセーブすることにしました。これは使いやすくて、最高・・簡単にセーブ機能を実装できます。またシナリオのシーンも最初だけ見れるようにPlayerPrefsに登録するようにしました。

宝石のかけらもそのまま設置しただけじゃちょっと物足りなかったのでアニメーションをつけました。(多きなったり小さくなったりするアニメーション、簡単だからこれでパパっと実装しました)。

アニメーション、また宝石をゲットしときのサウンドエフェクトも追加しました。

エメラルドのステージはこれで完成しました!次はルビーのステージを開発していきます。マップのドット絵から始めるので時間は少しかかりそう。ルビーのステージは最初のステージと違って、違う仕様にしようと思います。

ギルガメ的にはナイスアイデアだと思っているので、お楽しみに!!


2020年7月6日月曜日

Steamに向けて「ギルガメジャンパー」リリースまでの開発 #2



おはこんばんにちは!ギルガメです!

早くSteamにリリースしてみたい!その気持ちだけでがむしゃらにプログラミングしています。ワンコインで気軽に遊べるゲームならあそんでくれないだろうか。遊びたいと思ってくれる人だけ遊んでくれたらそれだけでうれしいな。

前回のシナリオの実装から、次はステージのセレクトのシーンを作成しました。
3つの宝石を手に入れるステージ
  • 緑の宝石「エメラルド」
  • 赤の宝石「ルビー」
  • 青の宝石「サファイア」
ステージセレクト、各宝石のしたにある時空を
クリックしてステージをプレイできます。

またこのセレクトシーンの真ん中の上にいる謎の生き物がここを管理する妖精になります。ギルガメのデザイン能力ではこれが精いっぱいでした。もっとかわいく作りたかった。あまり細かいとアニメーションも時間がかかるので、今回はこれで上下に揺れるアニメーションを追加して会話シーンを追加してこのシーンは完了になります。

ちなみにこの妖精を近くでみると・・
なんだろう・・妖精のかけらもない生き物だよね・・
マインドブレイン!
これは妖精・・これは妖精

着々とリリースまで進めていますが、次はステージにかけら集めなどを実装します。ちがうアイデアは宝石が砕かれて、ステージでかけらを集めていくっていうのも面白うかと思いました。なんかこっちの方がオリジナル感があるから、こっちにしようかな・・

悩む!

アンドロイドもモバイル用に操作できるようにすればそのままリリースできると思うので、まずは形(ベース)になるものからちゃんと作っていきたいと思います。

今後もよろしくお願いします!


2020年7月5日日曜日

Steamに向けて「ギルガメジャンパー」リリースまでの開発 #1



おはこんばんにちは!ギルガメです!

前に行った企画「一週間でゲームを制作チャレンジ企画第一弾」で制作したゲーム「ギルガメジャンパー」を正式にSteamとモバイルOSアンドロイドに向けて開発進めていくことにきめました!

企画で作ったものはでもプレイとしてこのままにしておきます。正式にリリースするためにはちょっとしたシナリオとステージを追加になります。今回はそんなちょっとしたシナリオの実装になります。

シナリオに関しては頭にあるのですが、シナリオをunity3Dで動かすことは初めてです。動きやセリフを順番に動かしていくという認識のみで試してみます。

ちょっとしたシナリオ
シナリオ1
ある日、ギルガメはいつものように「世界樹イグドラシル」の枝を散歩していました。そこでまがまがしいものを見つけます。確認の為にギルガメは近づいたが、それは時空のようなもので吸い込まれそうになります。離れようとしたが、すでに遅くギルガメは吸い込まれていきます。

シナリオ2
ギルガメは目をさまします。そこは出口のない密室で見たこともない場所でした。何かがギルガメに話しかけます。それは妖精でした。ギルガメは事情を妖精から聞きました。妖精は神殿の奥にある三つの宝石を守っていましたが、ある日突然なにものかに宝石を盗まれそうになります。つかまりそうになった犯人は宝石をランダム時空に放り投げ、そのまま妖精を神殿に閉じ込めて脱走しました。そこで妖精は助けを求め、時空を開きました。その時空がギルガメの世界に開き、吸い込まれた。

3つの宝石を手に入れるステージ
  • 緑の宝石「エメラルド」
  • 赤の宝石「ルビー」
  • 青の宝石「サファイア」
各ステージで宝石を手に入れて、ゲームクリアになります。

すべての宝石を手に入れて、ギルガメは元の世界に戻るという短いシナリオになります。

最後の一つをてにいれて、最後はドット絵のイラストでその後を表現しようと思います。

まず緑の宝石「エメラルド」はすでにあるステージを使います。風のギミックを追加できそうだったら実装します。

次に赤の宝石「ルビー」は、溶岩をイメージしたステージになります。こちらは横スクロールで死んだら、最初からまたは中間地点からになります。

そして青の宝石「サファイア」は海の海底をイメージして、暗くちょっとしたギミックをすでに考えています。お楽しみに!

またステージで集めてるクリスタルも用意して、キャラクターの開放とかも実装してみたいな。

Steamから開発して、順調だったらそのまま携帯でも実装します。これで利益がでたらiOSでもリリースする考えです。できるだけたくさんの人に遊んでもらいたいのでこれに集中します。7月17日にリリースできればと思うので、その日までガンガンプログラミングします。

2020年6月23日火曜日

2Dスクロールゲーム開発日記 #17



おはこんばんにちは!ギルガメです!

色々実装してきたけど、モンスターをまだ実装していない。平和すぎる世界だ・・いや平和が一番だけど、ハラハラドキドキがないと楽しめないよね・・なので今回はすごく簡単でシンプルなモンスターを実装していきたいと思います!

シンプル・・というのは、デザインに時間もかけず、簡単なスクリプトだけで攻撃するモンスターのことです。決してデザインが苦手だから手を抜いたとかじゃないからね・・多分。

実装するモンスターは遠距離攻撃モンスターになります。これを実装するとなると遠距離用の攻撃スクリプトとモンスターのスクリプト、遠距離攻撃の玉をで生成して飛ばして、次の攻撃までのタイムをランダムで設定していく形で進めていきたいと思います。

  • 遠距離攻撃の玉のスクリプト
  • ランダムで次の攻撃のタイムを計って攻撃するスクリプト

これを用意すれば実装できそうだ!

AttackBall.cs

Leaf.cs

これで遠距離用の玉にAttackBallを設定して、プレハブ化してます。プレハブ化した玉をLeaf.csに設定することで、ランダム攻撃ができるようになります。

テスト!

ブルークリスタルに目がくらんで、この遠距離攻撃でプレイヤーを倒すように設定。我ながらひどい考えです。

簡単ではありますが、こういう感じのモンスターって結構どこのマップでも使えそうなので実装してよかったです。

次回は死んだ回数を記録してUIに登録とクリア地点を作ろうかな。これができたらほぼほぼ基礎は完成に近づいてる気がする。いや・・まだまだかな。

一週間チャレンジ(一週間で新規ゲームをどこまで作れるかチャレンジ)をツイッチで配信しいるので興味のあるかたぜひ遊びに来てください!

2Dスクロールゲーム開発日記 #16



おはこんばんにちは!ギルガメです!

誰もが一度はテレポートしてみたいと思ったことがあると思います。そんな夢のあるテレポートを今回は実装でしていきます。テレポートに触れて移動したりすることで、マップの移動の幅が広がって、面白そうだなと思ったので試してきます!

まずはやっぱりスクリプトを作っていきます。やっぱりテレポートは行き先が必要なので、行き先や移動した瞬間にすぐに移動できないように硬直したり、戻ったりできろうにロジックを作ってみました。

TeleportController.cs

スクリプト完了!

これを設定して、今回はテレポートのデザインが浮かばなかった・・なのでパーティクルで我慢・・そのうち何か作ろうかな。

よし!テスト!

カメラの移動もいい感じに見える。これは人それぞれなのかな。カメラがぱっと移動するとなんか物足りない気がする。

テレポートの実装できた!色々実装していくと楽しい。たまにバグで中々進めないときがあるから・・そういう日もあるよね。めげないで頑張ろう。

次回は簡単なモンスターでも追加してみます!

2020年6月22日月曜日

2Dスクロールゲーム開発日記 #15



おはこんばんにちは!ゲームマスターのギルガメです!

前回はデスラインの作ったので、今回はそのデスラインを生かして中間地点のリスポーンを変更する仕様を追加します!

このままで鬼畜仕様でもいいかも。(グフフ

さっそくデザインを作ってみました。デザインは苦手でヘタでごめんなさい。

こんな感じで手前とバックを分けてつくりました。
プレイヤーが中を通るイメージができるのでおしゃれになります!

チェックポイント(中間地点)のスクリプトを作ってみました。
CheckpointController.cs


これを先ほどのデザインにセットして、コライダーにトリガーもチェックして、ちょっと適当にサウンドも設定して完成!!

どんな感じになったかな。

チェックポイントの中を通ってるように見えるからいい感じ!
リスポーン地点も最初からチェックポイントに変更してるので成功だ。

次はちょっとテレポートっぽいもの追加してみようかな。ロマンです。はい。テレポート使える時代こないかな。そんな夢みるギルガメです。

次回もよろしくね!

2Dスクロールゲーム開発日記 #14



おはこんばんにちは!ゲームマスターのギルガメです!

何を追加しようか迷ってはいたのですが、まだ崖から落ちたときに永遠に落ち続けるという悪夢がありました・・怖い・・。なので今回はデスラインを追加しようと思います。

プレイヤースクリプトを改修しました。こちらにプレイヤーが死んだときにGameControllerに設定してるリスポーン地点に移動するようにしました。またプレイヤーに操作を切り替えも追加しました。これは色んなところで使えそうなので、今回はデスしたときに1秒間移動できないようにしました。

改修後のプレイヤースクリプト

またGameControllerも改修しました。こちらにリスポーン地点の設定とあとから中間地点のリスポーン地点の変更のためのファンクションを追加しました。

改修後のGameControllerスクリプト

あとはデスライン用のスクリプトを作成します。
DeadController.cs

これで必要な準備は完了かな。
さっそくデスラインを作っていこう。

デスラインにコライダーにトリガーを設定して先ほどのDeadController.csを追加します。

GameControllerにリスポーン地点を設定してさっそくテストだ!

崖から落ちて、デスってもリスポーン地点に復活するようになりました!

次は中間地点を追加していきたいと思います。ある程度進んで、プレイヤーが死んだら、最初からは鬼畜するぎるから(以外をそれもいいかも)。そういうステージも作ってみようかな。

次回もよろしくね!チャオ!


2020年6月21日日曜日

2Dスクロールゲーム開発日記 #13


おはこんばんにちは!ゲームマスターのギルガメです!

前回はクリスタルを追加しました。ですがプレイヤーからはクリスタルの取得数がわからいのでUIにクリスタルを追加しています。

こんな感じにUIを作成しました。

今度はスクリプトでクリスタルを獲得するたびにUIのカウントを更新するように改修しました。

DataController.cs


これでクリスタルの数もプレイヤーが把握しやすくなりました!

取得すたびに更新されています!

クリスタルとUIの追加のバージョンはこちらです。

まだまだUIやシーンの変更時のアニメーションや敵の追加が足りない!
今度は何を追加しようかな・・

2Dスクロールゲーム開発日記 #12



おはこんばんにちは!ゲームマスターのギルガメです!

今度はゲーム内のお金になるクリスタルの追加をしていきます!

まずはゲーム内でクリスタルの獲得数の管理するスクリプトを作ります。またシーンが切り替えたりしたときに処理を軽くするために「DontDestroyOnLoad」を追加して、毎回生成を避けるようにします。

二つのスクリプトを用意します。
  • GameController
  • DataController
GameControllerは名前の通り、ゲーム内の管理を行うスクリプトになります。まだゲーム自体の要素が少ないので管理するものは少ないですが、今回は「DataController」を管理するようにします。ゲーム起動時に「DataController」の有り無しを確認し、あれば何もしない。無ければ新しく「DataController」を作成します。

GameController.cs

DataControllerはクリスタルの数を管理するスクリプトになります。またシーンが切り替わるたび、消えないように設定します。設定することで処理を軽くします。クリスタルを取得したときに数の管理スクリプトも作成します。
「DontDestroyOnLoad」に設定するこでシーン切り替え時、消えません。
これは本当に助かります!


DataController.cs

これでゲーム内の管理スクリプトが完成です!クリスタルを作っていこう!
デザインを作って・・試しに配置してみよう。

おお・・雰囲気でた!

いい感じ!今度はプレイヤーがクリスタルに触れたときにクリスタルが消える処理とサウンドを追加します。それから「DataController」にクリスタルの数を増やします。

Crystal.cs


クリスタルの獲得時の数とサウンドを設定できるようにしてみました。プレイヤーにAudioSourceを追加して、クリスタルに設定したサウンドを流すことで取得時の音を流すことができます!

DataControllerのクリスタルの数もサウンドもOK!

これでクリスタルをためることができる!アイテム購入やガチャも追加したい・・
これだけじゃプレイヤーからするとクリスタルがどのぐらい獲得しているかわからないので、画面にUIを追加していきたいと思います。

次回もよろしくね!