Unityでノベルゲームを制作中

はじめに

この記事はOUCC Advent Calender 2019の23日目の記事です(完成したのは12/31です)

パワポケから野球要素を抜いたノベルゲームみたいなのを作りたかったので、12月から土台作りを始めました。
土台作りといっても基礎となる部分は以下のサイトを参考に作成しました。

今回はこれをパワポケ風に近づけるために追加した機能を書きたいと思います。

1 キャラの立ち位置を二か所にする

パワポケでは左右にキャラが立って、会話が展開されるので、まずはキャラを左右に立たせるようにしました。このとき、3人目のキャラを追加するときは、既にいるどちらか二人のうちの一人を消して、3人目のキャラを追加するようにしました。

Gif画像をUpしたかったのですが、容量的に上げられませんでした…

2 背景画像を変える

#bg_imageで背景を変えられるようにしました。

3 真ん中に画像が出るようにする

背景と同じ要領で真ん中に画像が出るようにしました。背景との違いは#center_imageで真ん中に画像が出現して、#center_image_offでその画像を見えなくするといったところです。

4 選択肢の内容をメッセージボックスに表示する

選択肢のボタンを表示させて、ボタンに触れるとそのボタンのテキストの内容をメッセージボックスに表示するようにしました。

5 その他機能

そのほかに追加した機能としては、BGMを変える機能や、SEを鳴らす機能、コマンドで使用している’#’をメッセージボックスに表示させるためのエスケープシーケンスを実装しました。

6 まとめ

以上述べたような機能を実装しましたが、パワポケ風にするためには、パラメーターの追加やフラグ管理など、追加しなければならないことが沢山あるのでこれからも追加していきたいと思います。
今回は容量の都合上、gif画像を使えなかったので、次に投稿するときはgif画像を上げられるようなブログで書きたいなと思います。

お借りした素材

キャラクターの素材:いらすとや様
背景素材:あやえも研究所様
出演:部室に侵入した猫様

Unityで複数のスクリプトを同様に扱いたい

・あらすじ 

~ Unityで武器換装機能を実装したい~

 先週VRのシューティングゲームを作っている最中に武器の換装機能を徹夜で実装する機会がありました。

 その際プレイヤーやどこかのGameObjectに全ての武器の処理を書くのが煩雑で嫌だなと思ったので、武器のオブジェクトにその武器の動作を規定するスクリプトを張り付けることにしたんです。

 Oculus IntegrationアセットのOVRGrabberスクリプトのgrabbedObjectに現在つかんでいるオブジェクトが格納されるそうなので取得した武器オブジェクトからGetComponentでスクリプトを取得したいと思っていたんですが、unityの仕様上それぞれの武器につけるスクリプト名は同一の名前を使用出来ないので GetComponent で一様に処理できないことに気が付いて、AM2時を迎えた私は大変困りました。

 それで何分悩んだかわからないけど死にかけの頭で考えて何とか実装には成功したので、今後同じ事態にはまった時のためにメモとしてここに記述します。

・ GetComponents

 GetComponents<>()というメソッドがあって、ここでMonoBehaviourを指定すればMonoBehaviourを継承したスクリプト、つまり自作のスクリプト(の大半)を全て取得できるそうです。

public class TimerManager : MonoBehaviour 

  (↑実はこの:の後の部分が継承元だったんですね。私はC#を勉強せずにUnity書いてる人なので知りませんでした。) 

 しかし、MonoBehaviourを指定して取得したインスタンスは MonoBehaviour に存在するメソッドしか使用できないみたいです。

・解

 よって次のように MonoBehaviourを継承した、使用したいメソッドを記述したクラスを生成し、

public class guns : MonoBehaviour
 {
  public virtual void shoot(){}
}

 さらにそれを武器の動作を記述したクラスが継承すれば、 GetComponents<guns>() で取得し、shootメソッドを使用することが出来るようになります。やったね。

public class gun_makrov : guns//継承
{
   public virtual void shoot(){
   //内容
  } 
}

筆者:OUCC 2DCG班班長、AI班班長

ちなみに筆者は当日実装間に合ってません。

ちょこっと思いついてちょこっと作ってみたゲームについて

これはOUCC 2019年アドベントカレンダー 12/10 分の記事です。

ちょこっと思いついてUnityで簡単に作ったゲームについて書きます。作ったといっても個人で自己満足するくらいの出来で、とても他人に見せられるものではないです。

今回考えたゲームのテーマは、「デッキ作製系リアルタイム対戦ゲーム」です。戦闘画面のイメージは次の通り。

対戦画面

画面下にコマンドを10個程度用意し、ボタンをクリックするとその効果を発揮する、という感じで先頭を進めます。連打は禁止するために一定時間押せないようにし、また、押すたびにそのボタンが発揮する効果を変更します。ほんとはもっとカードっぽいものにしたいんですけど、もちろん著者にそんな技術や時間はありません。

ボタンに現れる効果は、あらかじめデッキを作成しておき、そのデッキにおけるカードの割合で出す、ということを考えています。つまり、攻撃カード、攻撃力アップカード、魔法攻撃カード、魔法攻撃アップカードを各1枚ずつ入れたデッキなら、4分の1の確率で各カードが登場します。

戦闘はこのボタンクリックのみで行います。そのため、図では攻撃系のカードしか表示してませんが、体力回復、防御力アップなどのカードも入れる必要があると思います。カードゲームをしたことがある人なら、使いたいカードをただひたすら入れてもうまく動かないことがよくわかると思います。なので、戦闘そのものより、戦闘しやすいようにデッキを作る、というのが主なゲームになると思います。そんなところまで作ってませんけど。

ここからは、このゲームを作る場合どうするのがいいかということついてだらだら書こうと思います。

まず能力アップ系のカードについてですが、戦闘中に何回も押されるため、効果を小さくする必要があります。1.1^100は約14000なので、まあ1.1倍とかがいいのかなと思います。また、1回の戦闘で終わるのはせっかく強くしたのに、という感じだったり難易度的にもその敵に対しデッキを作るだけになるので、フェーズの形で1つ前の状態を受け継いで次の敵キャラとの戦闘に入る、とするほうがいいんじゃないかと思ってます。

デッキ作製系ゲームを謳うならカードの種類もいろいろ必要だと思うんですけど、上に挙げたもの以外だと普通の攻撃だけでなく必殺技を設けるとか、あとはレベルの高いカードを用意して、効果が1.1倍でなく1.2倍になったり、次にカードが押せるようになるまでの時間が短くなるみたいな効果を追加したらいいんじゃないかと思います。あとは、デッキを2つ用意しておいてデッキを入れ替えるカード、というのもゲーム性が上がるんじゃないかと思います。

ここまでいろいろ書いてきましたが、僕はこのゲームを最後まで作るつもりはありません。そんな気力がないので。なのでここまで作って完成ということにします。すでにこういうゲームがあるなら教えてほしいです。

まちかね祭出店!

これまでとは一味違う出店です!

どうも、久しぶりに投稿します。

今回、2019年度まちかね祭に店舗及び展示で出店しました!

今回の学祭でも我々は沢山の方に唐揚げを食べていただき、展示では、VRやシューティングゲームなど、これまでとは一味違うガチの展示を行えました。

興味がある方は是非学祭に足を運びください!

夏合宿を行いました

2年前に消滅してしまった合宿を再興したいということで、9月9日~9月11日にかけて、福井県にある「泰澄の杜(たいちょうのもり)」で夏合宿を行いました。

この合宿の目的はチーム開発を経験することということで、3人1組の2つのグループに分かれて開発をしました。開発をする時間は9月9日の16時から9月11日の11時30分まででした。最後の夜は徹夜をして、開発終了時間にはどちらも動くものを発表することができました。

今回お世話になった「泰澄の杜」さんは、大人数が入れる多目的室を6人で使わせていただいたり、料理がおいしかったり大変満足しました。

個人的な感想としては、開発時間がもう1日くらいあればよかったなと思ったので次に開発合宿をする際は3泊4日とかにしてもいいかなと思います。

合宿とは関係のない話ですが、大阪大学コンピュータクラブは後期も部員を募集しているので、入部したい方や見学したい方は是非メールを送ってください。

いちょう祭に出店しました

こんにちは、久々の更新です!
令和初のいちょう祭にOUCCは模擬店と展示で出展させていただきました。
模擬店では唐揚げと焼き鳥を売らせていただき、二日とも休日だったおかげか唐揚げを完売することができました!!(去年は10kgほど売り残りがあり、部員たちで唐揚げパーティー(消費会)を開催しました(笑))
また、展示では去年のまちかね祭で出させていただいたシューティングゲームや占いに加え、opencvを用いたゲームや部長が作ったアクションゲームを展示させていただきました!!

今後のOUCCの活動としては五月に講習会や新入生の入部会があるので、興味のある人はぜひ部室にお越しください!!

2019年度LT会開催!

Posted By OUCC サーバ管理 (2019/04/19)

本日、4月19日にOUCC部室にて、春のLT会が開催されました!

LT会では、各部員が自身の活動内容を要約して発表するもので、OpenCVやBrain〇uckなど中々個人の趣味に走ったものが紹介されていました。

今後は、PythonやJavaScriptなど、講習会を開いていく予定です!

ドメインの更新

Posted By OUCC サーバ管理(2019/04/17)

本日、OUCC BLOGはwebの仕様を変更しました!

これまでのOUCC BLOGは「https://oucc.org/blog/」でしたが、今度からは「https://blog.oucc.org/」になります!

変更した理由は、別のサービスであることを強調する・管理体制の観点からこの変更に至りました。

今後ともOUCC BLOGをよろしくお願いします。

激動の一週間を終えて

Posted By OUCC 旧サーバ管理 (2019/04/13)

さて、やっと一週間が終わりました。新しいセメスターになり、久しぶりの講義に苦労していましたが、何とか乗り越えることが出来たという感じです汗。昨日は多くの新入生が見学に来て、説明会などを行いました。

さて、本日は「OUCC火曜会」(火曜日に集まるメンバー)で集まり、たこ焼きパーティを開きました。とは言っても、タコは高くて手が出しづらいため代わりにウインナーを使いましたが(-_-;)

このように、OUCCの部員は部室を自由に使うことができるため、集まって宴会を開いたりすることができるのです!

次には、新歓でも新入生にも振るう予定ですので、ぜひ部室にお越しください!

サーオリ開催!

Posted by 旧サーバ管理 (2019/04/06)

本日、サークルオリエンテーション、通称サーオリが大阪大学で開催されました。

サーオリとは、大学内の各サークル・部活が新入生に対して活動の紹介や新歓を行う春の恒例行事です!

ちなみに我がOUCCでは、なんと手違いにより部室をとれないというびっくりするような事態が起きたため、部に関する説明は部室にて行うことになっております汗。

説明会に参加してもらえれば、OUCCの雰囲気を理解してもらえると思うので、アクセスなどを参考にして、是非ご参加ください!!