新ゲーム「Caplus(キャプラス)」開発日記8
Caplus用のBGMをMedlyアプリで簡易ながら作曲してみました。
タイトル
soundcloud.com
メニュー
soundcloud.com
ゲームオーバー
soundcloud.com
あとはNASAのウェブサイトで利用可能な画像を使いゲームの背景に設定してみました。
新ゲーム「Caplus(キャプラス)」開発日記7
引き続きCaplusの実装を進めていました。
タイトル、メニュー、ゲーム画面の各シーンの繋ぎ込み。メニュー画像の各ボタンはスプライト画像を準備して、UnityのSpriteEditorでスライスを行い、設置を行いました。
来週12/10のunityroom アドベントカレンダー 2018にて公開できるように準備中です。(来週の段階では一部のゲームのみ遊べる状態を目標としています。)
プレイヤーの動きについても、実装を行いました。プレイヤーの移動の際にRigidBodyに速度を加えて、キー操作のない場合、速度を強制的に0にしています。(以前はFixedUpdateを使っていましたが、今回はUniRXを使い、キー操作があった時のみ処理を実施するようにしています。)
プレイヤーの移動範囲については、画面に合わせてBoundaryクラスで定義しています。(シューティングチュートリアルのものと同様です。)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UniRx;
using UniRx.Triggers;
namespace Caplus.Assets.Scripts.Player
{
[System.Serializable]
public class Boundary
{
public float xMin, xMax, yMin, yMax;
}
public class PlayerMove : MonoBehaviour
{
public SimpleTouchPad touchPad;
public Boundary boundary;
public float speed;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
boundary.xMin = -16;
boundary.xMax = 8;
boundary.yMin = -10;
boundary.yMax = 10;
speed = 20;
// UniRX 移動処理
this.UpdateAsObservable()
.Where(_ =>
(Input.GetAxis("Horizontal") != 0) ||
(Input.GetAxis("Vertical") != 0)
)
.Subscribe(_ => ActionMove());
this.UpdateAsObservable()
.Where(_ =>
(Input.GetAxis("Horizontal") == 0) &&
(Input.GetAxis("Vertical") == 0)
)
.Subscribe(_ => ActionStop());
}
void ActionStop()
{
rb.AddForce(0, 0, 0);
GetComponent<Rigidbody>().velocity = new Vector3(0, 0, 0);
}
void ActionMove()
{
float x = Input.GetAxis("Horizontal");
float y = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(x, y, 0.0f);
GetComponent<Rigidbody>().velocity = movement * speed;
GetComponent<Rigidbody>().position = new Vector3
(
Mathf.Clamp(GetComponent<Rigidbody>().position.x, boundary.xMin, boundary.xMax),
Mathf.Clamp(GetComponent<Rigidbody>().position.y, boundary.yMin, boundary.yMax),
0.0f
);
}
}
}
新ゲーム「Caplus(キャプラス)」開発日記6
引き続きCaplusのタイトルを作ってみました。
背景の作り込みがまだだったので、Autodesk Graphicを使い、宇宙や地球をなんとなくですが、イメージしたものを目指してみました。
中央部分の光は独自ブラシを使い、端のほうが細くなるような光のようなイメージにして、レイヤーのモードを調整するなどしてみました。
一週間ゲームジャム テーマ「10」 TENKOWASUというゲームを作ってみました
一週間ゲームジャム テーマ「10」 TENKOWASUというゲームを作ってみました。
やはりあまり時間をとれず、Roll-a-ballをメインとしたゲームにしてみました。
今回チャレンジしてみたかったものの実現できなかったものはオブジェクトを砕く表現と加速した時にオブジェクト破壊にその威力が反映するようにする仕様でした。velocity magnitudeをつかってみたのですが、速度の取得がうまくいきませんでした。(ボールをいろいろな角度からオブジェクトにぶつけようとした時に、取得しようとする速度が極端に変わってしまう。)
オブジェクトを砕く表現については、オブジェクトに触れた時に、割れたオブジェクトを用意して、それに差し替えRigidbodyを使って破片を吹き飛ばすようなことができそうかなというイメージは湧いたのですが、こちら素材を作り込む時間がなかったため、Unityの標準機能で作ったプレハブと交換する程度にしてみました。
作ってみたいアイデアの練りこみをもう少し行うのと、開発期間を短縮するために簡単なゲームをもっとたくさん作っておく必要があると実感しました。
あとは最低限の挙動をするゲームのプロトタイプを用意しておき、今後はそれを使って開発期間を短縮させたり、UI周りの素材、音楽などを準備しておくなどして、クオリティをアップさせられるようにできればと思います。
一週間ゲームジャム テーマ「10」 TENKOWASUというゲームを作ってみます
今回の一週間ゲームジャムのテーマは10なので、10個のオブジェクトを破壊するTENKOWASUというゲームを作ってみることにします。
ゲームのルール自体は比較的シンプルなものになると思いますが、一度に10個壊すのは少しコツや運も必要なものにできればと考えています。週末にならないと開発に本格的に着手はできなそうなので、今はタイトル画像などの素材を作っています。
新ゲーム「Caplus(キャプラス)」開発日記5
Caplusのゲームシーンのカメラ表示を少し調整してみました。前作Captulionと同様にProjectionをOrthographicに変更し、Sizeを少し変更することで移動しても自機の大きさを一定のままにすることができます。
自機の大きさが良い感じになってきました。
あとは必要なスクリプトの洗い出しなどをしてみました。機能のメンテナンスをしやすいように極力機能毎にスクリプトをまとめておこうと思います。
spaceShip
スペースシップ
プレイヤー
エネミー
スレーブ
GameManager
ゲームコントローラー
ゲームスクロール
プレイヤースポーン
エネミースポーン
ボスエネミースポーン
ゲームクリア
Sound
サウンド
BGM
エフェクト
エフェクトプレイヤービーム
エフェクトプレイヤーキャプチャービーム
エフェクトプレイヤーダメージ
エフェクトエネミービーム
エネミーダメージ
エネミースレーブ
Attack
weapon abstract
ウェポン
ノーマル
マルチ
レーザー
ホーミング
反射レーザー
炸裂弾
Beam
ビームabstract
ノーマルビーム
エネミービーム
レーザー
ミサイル
Player
プレイヤームーブ
プレイヤーアタック
プレイヤーキャプチャービーム
プレイヤーダメージ
プレイヤーデストロイ
プレイヤーリカバー
Pirot
Enemy
エネミームーブ
エネミーアタック
エネミーダメージ
エネミーデストロイ
Capture
キャプチャービーム
ノーマル
ラピッド
ブラックホール
Camera
UI
PlayerMoveButton
CaptureBeamGage
CaptureButton
StageMove
Shield
新ゲーム「Caplus(キャプラス)」開発日記4
Caplusのゲームステージの仮デザインをしています。
Captulionは縦型でしたが、Caplusでは横型にしてみようと思います。横型のシューティングゲームにすることで両手で操作しやすい形式にして、ショットは自動、敵機を捕獲するキャプチャービームは条件を満たした後にボタンを押下することで発射する仕様を考えています。(キャプチャービームは円ゲージにして、ゲージが溜まったら押下できる)
捕獲した敵機はCaptulionでは自機を追尾していましたが、Caplusでは画面端に移動し、そこから上下にランダムで移動するように変更してみようと考えています。捕獲する敵機が増えると当たり判定が大きくなってしまうのと、敵機の大きさによって自機に被って自機が見えにくくなってしまうため、その解消を目的としています。
自機は以前のCaptulionで使用したモデルを一旦設置してみましたが、横型に合わせて調整してみようと思います。