8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PlayMakerで乱数と条件分岐のシンプルな例

Last updated at Posted at 2019-01-21

はじめに

QiitaにPlayMakerの記事が少ない(特に初心者向けの記事がない)ので、超基本的な乱数と条件分岐のシンプルな例を書いてみました。

前提情報

要件定義

  • 乱数で1~6の整数値を取得(ダイスロール)
  • 取得した値が「3以下か」「4以上か」の条件分岐
  • Debug Logで「3以下」「4以上」と出力する
  • 「Replay」ボタンで乱数取得に戻る(リプレイ)

配置したObject

hierarchy.jpg

① PlayMakerManager

EmptyのGameObject→「PlayMakerManager」にリネーム。
このオブジェクトにメインのFSMを作成します。

② ReplayButton

UI > Button→「ReplayButton」にリネーム。
このボタンをクリックすると乱数取得に戻ります。
クリックイベントを発火させるFSMを作成します。
(あと必須ではありませんが、子オブジェクトのTextを「Replay」と変更しておきます)

text.jpg

PlayMakerManagerのFSM

PmFsm.jpg

1.「GetDiceRoll」ステート

「START」と新たに作ったグローバルイベント「ReplayButtonClick」から遷移します。

GetDiceRoll.jpg

1-1.「Random Int」アクション

1から6の整数値で乱数を求め、変数「randInt」に格納します。
※Inclusive Max:Max値を含めるか含めないか(チェックすると含める)

1-2.「Debug Log」アクション

求めた乱数値をコンソールにデバッグ出力します。

2.「CheckDiceRoll」ステート

CheckDiceRoll.jpg

2-1.「Int Compare」アクション

変数「randInt」と数値「3」で比較します。

  • Equal(randInt = 3):SmallNumberイベント
  • Less Than(randInt < 3):SmallNumberイベント
  • Greater Than(randInt > 3):BigNumberイベント

3.「OutputSmallNumber」ステート

small.jpg

3-1.「Debug Log」アクション

「3以下が出た」をコンソールにデバッグ出力します。

4.「OutputBigNumber」ステート

4-1.「Debug Log」アクション

「4以上が出た」をコンソールにデバッグ出力します。

ReplayButtonのFSM

ReplayButton.jpg

※「State 1」は空です。

5.「SendButtonClick」ステート

「UI CLICK」イベント(このボタンをクリックした時に発火)から遷移します。

SendEvent.jpg

5-1.「Send Event」アクション

「PlayMakerManager」オブジェクトにグローバルイベント「ReplayButtonClick」を送ります。
※ターゲットを「Broadcast All」(みんなに送る)にしてもOK。

イベント

PlayMakerManagerのイベント

イベント.jpg

作成したイベントは以下の通りです。

  • BigNumber:CheckDiceRollステートで「4以上」の場合に「OutputBigNumber」ステートへ遷移させる
  • ReplayButtonClick:ボタンクリック時にボタン側で発火させるイベント。FSMをまたぐためチェックボックスにチェックを入れてグローバルイベントに設定
  • SmallNumber:CheckDiceRollステートで「3以下」の場合に「OutputSmallNumber」ステートへ遷移させる

ReplayButtonのイベント

ボタンイベント.jpg

  • ReplayButtonClick:同上(グローバルなのでこっちにもある)

変数

PlayMakerManagerの変数

変数.jpg

  • randInt:Int型(取得した乱数値を格納する)

※ReplayButtonの変数はなし

コンソール出力例

Console.jpg

2回ダイスロールして、1回目に3、2回目に4が出た。

おわりに

PlayMaker(ほんとに)チョットデキルレベルですが、自分の勉強も兼ねて書いてみました。
記事に間違いや修正の必要がありましたら、優しく教えていただければと思います。
また、初心者の方から「ここがわからない」などありましたら、お気軽にコメントいただければと思います。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?