インディーゲームクリエイター目指すやつのブログ

インディーゲームクリエイター目指す、20歳の学生ですのブログです。開発環境はUnity、ドット調の2dゲームを主に作っています。

UnityでShockWaveShaderを実装してみる。

 

といっても、ゼロからではなくshaderToyあるのをそのままUnityにもっていきます。

 shaderToyにあったshockWaveのコードです。

gist25a6e7773bdc3fed81f9a4495dda7d65

 

1.iTimeをunityの_Timeに変更。

 _Timeはfloat4型で(t/20, t, t*2, t*3)が入っている。ここではtをそのまま使うので

 _Time.yを使う。

2.vec2,3型をfloat2,3型に変更

 UnityのshaderではVec3の型は使えないらしい。 

3.texcoordをi.uvに変更する。

 unityはtexcoord(uv)を変数として用意されている。

4.Colorのところをunity用のfloat4 colに変更する。

5. Texture関数を、sample2D関数に変更する。

 

んでこれがUnity用に変更したコード

gist9775af23d9dd7fb5e0d9842f9e9ccfaa

 

最終的にこんな感じになりました

f:id:Takahashi5531:20171018003258g:plain

 

ソシャゲ嫌いな俺がコロプラ最新作「PaniPani」を4時間ぐらいやってしまったので、考察してみた。

なぜ四時間ぐらいやってしまったのかをいくつか挙げてみる。

1、片手で横スクロールアクションができる

コロプラが作るゲームの特徴として、片手でできるのはかなり大事らしいね。

でも、たしかに寝っ転がりながらできるからついやってしまう。

 

2、ガチャはなく、カプセルシステムがやめられない大きな要因

敵を倒しまくれば、カプセルを開くことができるシステム。

しかし、先にカプセルを取った順でしか開くことができないので、レアなカプセルがでたとしても、たくさんカプセルを持っていたら、それらをまず開くためにたくさん敵を倒しまくらなければならない。さらに、カプセルには制限時間がついているため、やめると損な気分になる。あとちょっとで、レアカプセルが開ける状態ならば、絶対にやめられないだろう。

 

3、ポチポチやれば勝手に成長する快感、それに加えて熟練度システムがマッチ。

特定の行動をすると、その行動が成長する熟練度システムがこのゲームの特徴の一つ。

HPを上げるために、ダメージを食らったり、ガード力をあげるためには敵の攻撃をガードしなければならない。逆に言うと、敵を倒す以外に成長する要素があるわけだ。

成長はうれしいが、ときたまめんどくさい熟練度もある。時間をかけなければならない要素だ。

 

たぶん、一番やめまれない要因は2だろう。

このシステムはいい意味でやめられない。

ただプレイしてみて、面白かったとはならなかった。

 

応用

やはり、敵と戦う以外になにか成長できるなにかがあるといいと思った。3の熟練度システムてきな。ただ、あまり成長を感じにくいと意味がないと思った。

たとえば、Downwellのポイントなんかもやめられない要因の一つだと思う。

モチベーション維持かな。死んでも、ポイントは残る。ポイントがたまれば、新しいスタイルをゲットできるみたいな。

そうすると、死んでも大丈夫みたいになるしね。

あと、スタイルによって戦略とかも生まれるしね。

 

ソシャゲ嫌いな俺がコロプラ最新作「PaniPani」を4時間ぐらいやってしまったので、考察してみた。

なぜ四時間ぐらいやってしまったのかをいくつか挙げてみる。

1、片手で横スクロールアクションができる

コロプラが作るゲームの特徴として、片手でできるのはかなり大事らしいね。

でも、たしかに寝っ転がりながらできるからついやってしまう。

 

2、ガチャはなく、カプセルシステムがやめられない大きな要因

敵を倒しまくれば、カプセルを開くことができるシステム。

しかし、先にカプセルを取った順でしか開くことができないので、レアなカプセルがでたとしても、たくさんカプセルを持っていたら、それらをまず開くためにたくさん敵を倒しまくらなければならない。さらに、カプセルには制限時間がついているため、やめると損な気分になる。あとちょっとで、レアカプセルが開ける状態ならば、絶対にやめられないだろう。

 

3、ポチポチやれば勝手に成長する快感、それに加えて熟練度システムがマッチ。

特定の行動をすると、その行動が成長する熟練度システムがこのゲームの特徴の一つ。

HPを上げるために、ダメージを食らったり、ガード力をあげるためには敵の攻撃をガードしなければならない。逆に言うと、敵を倒す以外に成長する要素があるわけだ。

成長はうれしいが、ときたまめんどくさい熟練度もある。時間をかけなければならない要素だ。

 

たぶん、一番やめまれない要因は2だろう。

このシステムはいい意味でやめられない。

ただプレイしてみて、面白かったとはならなかった。

 

 

ジャンプの高さによって、重力とジャンプ力を求める

gravity = 重力
maxJumpHeight = ジャンプの高さ
timeToJumpApex = ジャンプの頂点に到達するスピード
jumpPower = ジャンプ力

gravity = -(2 * maxJumpHeight) / Mathf.Pow(timeToJumpApex,2);
jumpPower = Mathf.Abs (gravity) * timeToJumpApex;

UIのText改行の仕方

\nで改行できる。

しかし、インスペクタービューで受け取ったstringではできない。

その場合は[Multiline]を使えば改行できる。

[Multiline]public string text;とすれば、改行できるstring型を受け取れる。

ちなみに、配列でも[Multiline]は使える。

 

UIのTextメモ

RichText

  textの一部の色やサイズを変更できるかどうか。詳しくはここ*1

Align by Geometry

 意味わかんないけどチェックを入れたほうがきれいに整列してくれた。

Horizontal Overflow

 水平方向の表示範囲から出た場合、改行するか、そのままにするか。

Vertical Overflow

 垂直方向の表示範囲から出た場合、切り捨てるか、そのままにするか。

Best Fit

  余白により自動的にフォントのサイズが設定した最大最小サイズに変更される。

Raycast Target

 Raycastできるか、クリックやタップに反応するかいなか。

 Rayだから手前にべつのUIとかがあると反応を妨げてしまうらしい。

 

 

 

 

 

UIのTextメモ

richText

 textの一部の色やサイズを変更できるかどうか。詳しくはここ*1

Align by Geometry->意味わかんないけどチェックを入れたほうがきれいに整列してくれた。

Horizontal Overflow->水平方向の表示範囲から出た場合、改行するか、そのままにするか。

Vertical Overflow->垂直方向の表示範囲から出た場合、切り捨てるか、そのままにするか。