2022年10月26日水曜日

TileMapのアクション

TileMap(タイルマップ)機能にPlayMakerからアクセスしたい。
という場合のアクションの情報です。 

フォーラムに以前公開されたアクションパッケージは…、エコシステムにも
見つからず。(どこかにあるのかな)

公式フォーラム:トピック Tilemap Actions Package
https://hutonggames.com/playmakerforum/index.php?topic=23798.0

その代わり?アセットストアには、無償のパッケージが公開されてます。

Playmaker for Super Tilemap Editor

個人的には、TileMapを積極的には使わないので、詳しい解説は今のところ
出来ない状況…(_ _;)

【Unity】2019以降でTilePalletを使う(パッケージ導入等)
(【超初心者】一から始めるアプリ開発)
http://kerotan-factory.xblog.jp/article/472096922.html

【Unity】2Dタイルマップ① 基本的な使い方 (ひよこのたまご)
https://hiyotama.hatenablog.com/entry/2021/03/10/221323

2022年9月14日水曜日

UI部品をプレハブにして、必要なときに生成するためのTips

UI 部品(Text,Image 等)をプレハブにして必要なときに呼び出したい。
そのような場合、引っかかってしまうポイントと、その対処(PlayMaker での)
についてです。

UI 部品をプレハブにして、[ Create Object ] アクションでゲーム画面に配置して
も明後日の方向に出現してしまいます。

プレハブを呼び出した後、ヒエラルキーのCanvas内に配置し直し、位置設定を
しないといけません。そのためのアクションセットになります。

上の画像のステートでは

[ Create Object ] で「ima ゲージ (1)」なる、Image(画像)を生成しています。
その生成したオブジェクトを ゲームオブジェクト変数 「gobj 生成オブジェ」
に格納します。

そして次に、[ Set Parent ] でCanvas の子オブジェクトにします。

最後に[Rect Transform Set Local Position ] でCanvas内の位置を設定します。
これで希望の位置にUI部品を生成、配置することができます。


2022年9月2日金曜日

最新Unity [2022.1.14f1 ] に 最新PlayMaker [1.9.5.f3 ]を入れてみてのアレコレ(2022年09月02日現在)

 

普段はまだ Unity2019 を使用しているのですが、UnityもPlayMakerも
着々と進歩しています。新しい情報にも触れておいたほうが良いですね。というわけで、最新のシステムに関するアレコレです。
というか雑感でしょうか。

まず、初期プロジェクトについて。
最近はアプリを2Dで作ることが多いのですが、そのためには
プロジェクトの作成はじめに2Dテンプレートを選択することに
なります。
それが、何かすごく容量が大きい…。何も作成する前にすでに
1.3GBとかです。

2Dスプライト関連のファイルが大きいんでしょうか。
3Dテンプレートで作成すると400Mとかですし。
Unity2019では2Dに特別なテンプレート自体もなく300MBぐらい
だったかな。
あと、2Dのスプライトが、丸や四角などいくつか選べるように
なってますね。具体的な違いはまだよくわかりません。
その他のUnity側の新機能等は公式の情報などで賄えると思います。

そしてPlayMaker側で気付いた事。

@ スプライトアクションが標準に

以前は、カスタムアクションとしてエコシステムなどから調達しなければならなかったSprite関連のアクションが標準で一通り含まれています。
スプライトの切り替え(SetSprite)やなんやがそのままできます。もっと以前からあっても良かったですね。


@ 新しいインプットシステムへの対応アクションが追加

公式の新しい入力システムパッケージ[ Input System ]  をPlayMakerから
操作するためのものです。
どうやらカスタムパッケージをインストールしないとアクション
ブラウザのリストに、出てこないようです。

スクリプトはAssets/PlayMaker/Action/PlayerInput の中にあります。
アクションの使い方は、「unity inputsystem playmaker」などで
検索すると動画等、出てきます。


@ TextMesh Pro への対応

現在のUnityのUIはTextMesh Proを使うのが標準です。
以前のText 、Button 等も使えますがレガシー扱いです。
TextMesh Pro をPlayMakerから使うためには、カスタム
アクションを導入しなければなりません。

https://github.com/ericvanderwal/TextMeshPro_Playmaker

ここからDLできます。Codeボタン から Download Zip 。
解説動画もあるようです
https://www.youtube.com/watch?v=G7l-qPeZteE


他にも Unity側の新機能に対応するアクションは
[cinemachine、VR関連etc…]、エコシステムやウェブ上の
検索で結構見つかると思います。

2022年8月5日金曜日

100%PlayMaker [わんさでぃボトルメッセ]

PlayMakerのみで作ったWindowsアプリです。

一日一度だけ、ネットの海の彼方の誰かに、手紙を送ったり受け
取ったり出来る、ボトルメッセージ
アプリ。Windows用

公開ページ
https://sino.sakura.ne.jp/bottle.htm

 

2022年8月3日水曜日

IAP アプリ内課金の実装について

スマートフォンアプリでゲーム内アイテムなどを販売する場合
UnityIAP を使用します。

「ほぼコードレスで実装できる」とのことですが。
PlayMakerの入ったエディタであれば、完全にコードレスで実装できる
といっても良いのでしょう。

UnityIAP アセットのインストールについては、他に詳しく解説されて
いる方が沢山いらっしゃるので、そちらにお任せしたいと思います。

公式にある

Codeless IAP を利用します。

Unity のIAP アセットのインストール

【Unity】コードレスIAPで超簡単に課金実装(Android編)

(注 上記記事では、[IAP Catalog の作成] で
      Automatically initialize UnityPurchasing (recommended) に
      チェックを入れたほうが良いと思います。コードでイニシャ
      ライズを指示する必要がなくなるため)


------

ここでは、上記の
@ IAPの導入。
@ 販売アイテムの設定
@ 課金ボタンの作成

までが済んだ段階から、販売ボタンが押されてアイテムが購入がされた
場合の処理を、PlayMaker のFSM 内のステートで行う為の設定をします。

-----

まず、空のオブジェクトを作成し、PlayMakerのFSM を設定します。

------


そして、購入成功、失敗それぞれの場合のイベントを作成し
外部からの送信イベントとして、それぞれ設定します。





-----

IAPボタンのインスペクタでは、購入成功、失敗の場合の処理を
設定します。






このように





オブジェクトに、作成した空のオブジェクトを指定すると
Function にPlayMaker のFSM へのイベント送信が選択できます。
(画面外で見えませんが、PlayMakerFSM から [SendEvent(String]
  を選択しています。)

イベント名は、FSM で設定したものを書き込みます。

購入成功
購入失敗

----

そしてエディタを再生し、購入ボタンを押してみると。





このように、PlayMaker の ステートへ処理が渡されます。

2022年7月21日木曜日

(覚書)様々な画面サイズのスマホ全てに、ゲーム画面を対応させる

以前はスマホの画面も、16;9 のハイビジョン比率がほとんどでしたが、
最近は、様々な画面サイズの機種が登場しています。

16:9 を想定してビルドしたアプリは、それ以外の画面比率の
機種では、ゲームフィールドの縦横がはみ出たり、足りなかっ
たり、UI のレイアウトが崩れたり。自ずと不具合が出てしまいます。
それに対応する Tips です。

Unityの画面のアスペクト比と解像度を自動変換 全スマホ・複数解像度に対応させる

https://3dunity.org/game-create-lesson/clicker-game/mobile-adjustment/

説明を読み、掲載されているスクリプトを適用すると、様々な
スクリーンサイズ(アスペクト比)内にゲーム画面、UI をエディタ
での想定通りに表示してくれます。

2022年7月19日火曜日

(覚書) Android 12 端末に Unity で Android ビルドしたアプリをインストールする。

 

Android 12 端末に Unity で Android ビルドしたアプリがインストールできない問題に対する対処

https://xrdnk.hateblo.jp/entry/2021/11/05/115104

AndroidManifest.xml
を作成し、上記リンク記事のようにするだけで
対応出来ました。

<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:exported="true">
---

android:exported="true"

exported を 明示的に記述することが必要ということらしい。

---

初めて AndroidManifest.xml を作成する場合は、上記記事内
のテキストのコピペで良いよう。



2022年4月2日土曜日

(作成アクション)Create uuid

重複することが限りなく少ない一意な識別子
uuid を生成するアクションです。

ユーザー、端末の識別等に使用できます。

Create_UUID.cs
ファイルを

プロジェクト内 Assetsフォルダの中の
\Assets\PlayMaker_Custom_Actions\System 等、任意の場所において下さい
(unity2019.3.3f1 での動作を確認。)

 

アクションブラウザ内の [System] カテゴリーに表示されます。
-----


ステートに並べ開始すると、 id が作成され、指定した String 変数に格納されます。

id を PlayerPrefs にセーブする場合は、続けて標準アクションの
[
PlayerPrefs Set String ] を使うといいでしょう。
-------


インスペクタで、作成された id を表示しているところです。
詳しくは同封のReadme をお読み下さい。
不具合などは、コメント等にお願いします。

2022年3月25日金曜日

(アクション配布)WWWPOST

HTTP通信でデータを送受信するアクションを配布します。
以前はエコシステムで見つかったものですが、今は見当たらないようです。
WWWPOST のみの予定でしたが、他の3つも同封することにしました。

WWWPOST
WWWObjectRelative
WWWEscapeUrl
WWWPOSTMobile

WWWPOST を使うと、web上のCGI等にデータを送受信できます。
図の例では、https://anan.sakura.ne.jp/gamedata.cgi に

https://anan.sakura.ne.jp/gamedata.cgi?name=しののめ&score=5100 
といった形でデータを渡します。

Perl のスクリプトでは
-----
#!/usr/local/bin/perl

use CGI qw(:standard);
use Jcode;

## 受信データを $name $score へ代入。

$name = param("name");
$score   = param("score");
-----

のような形で受け取ることが出来ます。
(いずれ、別エントリで、もう少し詳しく書くことも…)

パラメータには、Texture や Audio もあるので様々な使い方があるの
かもしれません。改変してみるのも面白いのかも。
-----
WWWPOST
WWWObjectRelative

に関しては "MovieTexture" オブジェクトが unityでサポートされなくなった
ため、元のままでは最近のunityで、エラーになる状態でした。

配布のスクリプトは、 MovieTexture に関する部分を // つぶしておきました。
unity2019 では動作します。

WWWPOST.zip

詳しくは同封のReadme をお読み下さい。
不具合などは、コメント等にお願いします。

2022年3月11日金曜日

(作成アクション)Set Sprite Value

スプライト変数に、スプライト画像を代入するアクションが、エコシステムにも
無いようなので、作成してみました。


上の図の例では、プロジェクトの中の戦闘機の画像を選択し、設定した
スプライト変数  "spr 1" に代入しています。


-------

ノードはこのようです。

-----

スプライト変数は前もって作成しておきます。

-----

実行し、次のステートで、"Set Sprite" アクションを使い、
"spr 1" に代入された画像を自身に割り当てています。

( "Set Sprite" アクションはエコシステム [ Ecosystem ] にあるはずで
  すが、見当たらないこともあるようです。"Swap Sprite"でも代用で
  きます。欲しい方には再配布します。多分問題はないと思うので。)

Set Sprite で直接、画像を割り当てることが出来ますが、
意外と役立つ場面もあるかもしれません。


Set Sprite Value.zip

解凍して出来たフォルダ内の、SetSpriteValue.cs を
プロジェクト内 Assetsフォルダの中の
\Assets\PlayMaker_Custom_Actions\Sprite
等に入れてください。

PlayMakerのアクションブラウザのカテゴリ sprite 内に
SetSpriteValue アクションが追加されます。

不具合などは、コメント等にお願いします。


2022年1月23日日曜日

2D NavMesh をPlayMakerで

 公式フォーラムの投稿からです。

下記のトピックの Reply #3 の動画の中でPlayMaker を介して 2D NavMesh
を使っています。

FSM that lets NavMeshAgents go off the mesh

本ブログ内ページ
経路探索_パスファインディング で紹介しているアクションをそのまま利用できる
ようです。

2D NavMesh を使うには、 「NavMeshComponents の 2D 対応ブランチ」が必要です。
以下のブログ記事に使用法も含めてわかりやすく解説されています。

しっぽを追いかけて 「Unity で Tilemap に NavMesh をベイクしてみる」
https://www.matatabi-ux.com/entry/2021/03/04/100000

2022年1月12日水曜日

100%PlayMaker [Block_Defender_Android]

PlayMakerのみで作ったAndroidアプリです。
本ブログ記事で言えば、「2Dキャラ移動」や「弾の発射」等
比較的シンプルなアクション、ギミックで構成されています。

 

[説明]
上からミサイルがおちてきます。
砲台を左右に動かして、撃ち落としてください。
ミサイルは、撃ち漏らすとブロックを壊します。
ミサイルが一番下の陣地に当たると負けです。

砲台にミサイルが当たると、上のゲージが減ります。
ゲージがゼロになっても負けです。
ラウンドは30面まであります。
-----

当ゲームは、「試用版」と「正式版」があります。

アプリには広告や特別な条件、情報を送信する
仕組みなど一切ありません。
あくまで買い切りでご自身のアプリとして扱えます。

@「試用版」は無料で3面までプレイできます。
@
「正式版」は有料(150円)です。

試用版が正常に動けば、製品版も同様に動きます。
ぜひ製品版をPLAYしてください。

Google Play での紹介&インストール。
@試用版

https://play.google.com/store/apps/details?id=com.Running5Stick.app

 


@製品版(150YEN)

https://play.google.com/store/apps/details?id=com.Running5Stick.app

----

Tips

隕石はブロックを壊しますが、陣地には当たりません。
(隕石でゲームオーバーにはならない)

流れ星を撃つとボーナスステージに入ります。
そこで落ちてくる箱を撃つたびにゲージが増加し、ゲージが
いっぱいになるとパワーショットアイテムが落ちてきます。
パワーショットは3種類あります。

プレイ中、パッドから指を離すと、弾は発射されません。
星を撃たないという選択もできます。

「速」のアイテムを取ると移動速度が上がりますが、ラウンド
が変われば速度は元に戻ります。

公式ブログ nomegames 内紹介ページ