ツクロウヤ

Unityによるゲーム開発記やUnity,3dsMaxのTipsなどを記載していきます。

【開発記】進捗報告(5月:1回目)

進捗報告。
4月中頃より本業が忙しくなっていて、進捗が芳しくないですが、辞めないために一旦の報告。
しばらくはこの状態が続きそう...

前回の想定のものはほとんど出来ておらず、やったこととしては以下のことくらい。
・敵キャラの近距離、遠距離耐性+パラメータ整理
・打ち上げ攻撃の下準備

【敵キャラの近距離、遠距離耐性】
耐性値はキャラごとに種族を持たせて、種族毎に遠距離が弱点、近距離が耐性などを設定する形で実装。
現状、耐性値しかないけど、種族毎の特性などはここのパラメータで管理していく予定。
今の所のScriptableObjectの定義はこんな感じ。

f:id:ArtAwA:20180522232736j:plain

【今後について】
とりあえず前回からの持ち越しの
・打ち上げ攻撃、空中での行動
・敵キャラが距離を開くバックステップ
辺りを優先して作業していこうと思います。

それでは今回はこの辺で
(´・ω・`*)ノシ

【開発記】進捗報告(4月:1回目)

区切りが付いたので進捗報告。

以下のようなことをやっていました。
・対話などのイベント処理実装
・特定箇所に到達した際のイベント実行
・遠距離攻撃の実装(モーション、エフェクト仮)
・その他バグ修正

【対話などのイベント処理】
何はともあれ今回はGIFを。

f:id:ArtAwA:20180414103643g:plain

イベント設定はScriptableObjectで作成しました。
メッセージ、キャラ、角度、モーションなどを指定出来るようにしています。
イベントは「戦闘前」「戦闘後」「戦闘中に特定場所に到達」で実行できる形に。

GIF見ていて思いましたが、背景のプレイヤー、エネミーは対話時は消せるようにしておいた方が良さそう。戦闘画面のカメラから除外してあげれば、簡単に行けそうな?

 【特定箇所に到達した際のイベント実行】
メッセージなどのイベント実装に合わせて、戦闘中に特定場所に到達時に何かのイベントを実行できるように改修しました。今の所、対話、敵の生成だけだけど。

 【今後について】
この後の作業としては、
・戦闘関連
 └敵キャラの近距離、遠距離への耐性(別敵も作らないとな...)
 └敵キャラが距離を開くバックステップ
 └打ち上げ攻撃、空中での行動
・保存、読み込みの雛形作成
などを実装していこうかと思います。

 それでは今回はこの辺で
(´・ω・`*)ノシ

【Photoshop】9スライス画像の作成ツール

今日は個人開発中に作ったPhotoshopツールの紹介です。
ゲームでよく2D素材の容量削減のために9スライスの画像を作成しますが、作成した画像を真ん中を切って、移動してというのが面倒なので9スライス画像を作成するツールを作成しました。

そもそも9スライスって何ぞや?という方はこちらの方がまとめられている記事などをご確認ください。

スクリプト概要

今回のツールでは9スライスで使用する画像を作成するツールです。
例えば以下のようなフレーム画像を9スライス画像として要らない中心部分を切り取る時に使います。
スライスする位置の判定にはグリッドを設定して、そこを基準にスライスするようにしています。
保存形式は現状「pngのみ」です。(UIなど2Dで透過情報がないことはほぼないので...)
ちなみに今回は特にウィンドウは開きません。

f:id:ArtAwA:20180313010500j:plain

使い方

スクリプトの準備】
Commonファイルを常に最新にするためにデータを分けていますので、両方のファイルを落とすようにしてください。

NineSlicer.zip - Google ドライブ

Common.zip - Google ドライブ

  1. 上記2つの右上にある「ダウンロード」ボタンからスクリプトをダウンロード
  2. zipファイルを解凍する
  3. スクリプト用のフォルダに「ArtAwA」のフォルダを格納
    ※フォルダの階層は変えない→念のため他のファイルと競合させないため

格納場所例:
 「Mac」/Application/PhotoshopCC2017/Presets/Scripts/
 「Win」C:¥Program Files¥Adobe¥Adobe PhotoshopCC2017¥Presets¥Scripts

スクリプトの実行】

  1. 9スライスしたい画像のpngを用意する
    ※psdを直接スライスするようには想定していません。
    (いちおうレイヤーを強制的にマージして書き出せるようにはしていますが...)
  2. スライスしたい箇所にグリッドを配置する
    例では横だけですが、もちろん縦だけ、縦横と設定できます。

    f:id:ArtAwA:20180313012242j:plain

  3. 「ファイル」→「スクリプト」→「NineSlicer」を選択
  4. 9スライスしたい画像と同階層に「export」のフォルダが作成され、そこに書き出される

今後の追加予定

・スライス位置を自動で判別

 この記事を書いている途中で思いつきましたが、グリッドを設定すらしなくていいといいなと思い...
 例えば横にスライスしたい場合は縦方向のピクセルを配列に格納してやって、横に何個が全く同じ配列があれば、その部分をカットするようにするとかすればイケそうな気も。

【4/4追記】
処理的には出来ましたが、ピクセルを取得して判定するのはかなり重くて100px*60pxくらいのものでも1分以上かかっていたので、役に立たない...
一旦はグリッドからスライスする現状の方式でということで。

さいごに

ファイルの共有方法についてはちょっと色々と検討中。
汎用処理(Common)も1つのスクリプトの中に書いてしまえば、独立したファイルとして上げられるけどブログ用に別途普段遣いと分けて書くのは、めんどくさ、ミスが起きそうなのであまりやりたくない。
しばらくは良い方法が思い浮かぶまではCommonを別途落としてもらう形で行こうかと思います。

それでは今回はこの辺で
(´・ω・`*)ノシ

【開発記】進捗報告(2月:4回目)

ちょっと時間がかかりましたが、区切りが付いたので進捗報告。

しばらくは以下のようなことをやっていました。
・SimpleAnimatorへの移行
・武器の切り替え実装(UI、アニメ)
・移動をフローティングするように改修
・その他バグ修正

それぞれ結構学びがあり、記事にまとめておきたい内容ですが、ちょっと時間がかかりそうなので、また後日...

とりあえず簡単に

【SimpleAnimatorへの移行】
終了判定の改修、敵側の処理の移行などを行っていました。
「PlayableGraph.IsPlaying」が常にtrue状態になるようで、自前でUpdate内で再生後に時間経過で終了、フェードタイミングになったかを判定しています。

【武器の切り替え実装】
現状は攻撃ボタンをフリックすることによって、武器を切り替えるようにしています。
最初は普通にボタンを置こうとしていましたが、
・ボタンがギュウギュウになり、押しづらい
・操作性を変えることで少しでも単調さの解消
などがあったので、フリックにしました。
現状だとパッと見、フリック出来ることは分からないので、要検討。
(最初の操作説明でも良い気も...)

f:id:ArtAwA:20180228232723p:plain

【移動をフローティングするように】
以前は常にジョイパッドを表示していましたが、画面の左側をタップするとジョイパッドが出てきて、操作できるような形に変更しました。

この後の作業としては、
・銃の攻撃の実装
・メッセージなどのイベント処理実装
などを行おうと思います。

それでは今回はこの辺で
(´・ω・`*)ノシ