【unity2017.1】emissionで3Dオブジェクトを光らせる
はじめに
今回は静的な3Dオブジェクトを光らせ、静的な3Dオブジェクトに影響を与える方法についてです。動的な3Dオブジェクトには使えませんのでご注意を!
実装
- Materialを新規に作成します。
- 光らせたいオブジェクトに作成したMaterialをアタッチします。
- materialの設定からemssionを有効化します。
- 光らせたいオブジェクトと光の影響を受けたいオブジェクトをどちらもstaticにします。
- 光ります。
おわりに
光る側も光を受ける側もstaticにするというのを忘れずに...((ハマりました!
また、2Dの光らせ方は後々記事に直すと思いますので気になる方は確認してみてください。
【Rails】Font Awesomeの使い方
はじめに
Font Awesomeというサービスを知っているでしょうか?Webアイコンを使用したいときにちょうど良いサービスです。
今回はこのサービスの導入〜使用までを紹介したいと思います。
注意:Railsでの導入方法です。Rails以外ではこの方法は使えません。
導入〜使用方法
Gemfileに
font-awesome-rails
を追加する
gem 'font-awesome-rails'
のように記述してください。bundle installを実行
app/assets/stylesheets/application.css
に*= require font-awesome
を追加
デフォルトで大量にコメントアウトされている箇所に記述してください。
--参考画像--
html内に
<i class="fa fa-twitter" aria-hidden="true"></i>
を記述
これで、アイコンが表示されるはずです。
今回の例ではTwitterのアイコンが表示されます。他のアイコンが使用したい方は公式サイトから好きなアイコンのページに飛んで、用意されているコードを使用しましょう。
おわり
RailsはFont Awesomeの導入がとても簡単なので、是非使用しましょう!
プロver.もありますので気になる方はご確認を。では〜。
【Rails】uninitialized constant hogeController というエラーが出たときに確認すること
はじめに
タイトルにも書きましたが、uninitialized constant hogeController
というエラーが出たときに確認すると良い事柄をまとめていく記事です。
確認すべき事項
コントローラのファイル名とクラス名が一致しているか
ファイル名がhoges_controller.rb
であるにも関わらずファイル内で定義しているクラス名がHogeController
であればエラーが出ます。route.rb
に定義したコントローラ名/アクション名が正しいか
hoges#action
と書くべきところをhoge#action
と書いてしまうとエラーが出ます。
おわり
他のエラーパターンが見つかり次第追記しますー。
【Rails】画像を表示する方法
はじめに
今回はサイトに画像を表示する方法です。
htmlだと
<img src="sample.jpg" alt="画像説明">
と書きますね。
では、Railsではどのように書くのかというお話です。
Railsでの書き方
『百聞は一見にしかず』ということでコードをペタッと。
<%= image_tag "sample.png", :alt => "画像説明" %>
これではじめにの箇所で紹介したhtmlのコードと同じ働きとなります。
オプション
せっかくなので一つだけオプションを紹介しておきます。
- 画像のサイズを指定
:size => "16x16"
使用上の注意としては掛け算の部分が英字の"x"である点ですね。
その他のオプションはこちらからどうぞ。
おわり
%= %
を忘れないようにしてくださいね!では〜。
【Rails】GemfileとGemfile.lockの違い
はじめに
Railsで脱入門者を目指しています。
今回はGemfile
とGemfile.lock
の役割の違いを調べたので、とーーーっても簡単に紹介します。詳しい違いが知りたい方は他の方の記事をググって探して下さい。笑
Gemfile
アプリを作っている人が使いたいgemを書くファイル。
Gemfile.lock
必要な全てのgemが記述されているファイル。
Gemfile
に書いたgemを動かすために必要なgemの情報も詰まっている。
おわり
使いたいgemを書くのがGemfile
。Gemfile
に書かれているgemを使用するために依存関係にあるgemまで書いているのがGemfile.lock
です。
「Gemfile.lock
あると便利なの?」みたいな話は別の記事を分けたいと思います〜。ではでは。
【Rails】bundle installとbundle updateの違い
はじめに
Railsの脱入門者を目指しています。
今回はbundle install
とbundle update
の違いを調べたので未来の自分のためにも記事にしてみました。
bundle install
Gemfile.lock
を元にgemをインストールする。
この時、"Gemfile.lock
に書かれていないがGemfile
に書かれているgem"を見つけるとGemfile.lock
を更新しつつgemをインストールしてくれる。
最低限の必要なものだけをGemfile.lock
に追加してくれるイメージ。
bundle update
Gemfile
に基づいてgemのインストールを行い、Gemfile.lock
も更新する。
Gemfile.lock
の中身を最新版のgemに一新するイメージ。
最後に
細かい使い分けは不明ですが、bundle update
は全てを一新するので安易に使うと「あれ。動かなくなった。」ということになるらしいです。
Gemfileにgemを追加した時は基本bundle install
を使用しておけば良さそうです。
【unityroom投稿作品】Worker vs Week を振り返る
はじめに
今回はunityroomに投稿した作品「Worker vs Week 」を振り返る記事です。興味ある方はお付き合い下さい。
ゲームができるまで
- 0〜構想 -
元々、社会に物申す系のアプリ案がいくつかあった
「おすすめ アセット」で検索した際に弾幕生成アセットが紹介されていた
という流れから、ブラック企業をサラリーマンが倒すSTGを思いつきました。
その後、サラリーマンがツラい1週間を乗り切るまで何人犠牲になるのか競うSTGが面白いのでは?という考えに至り原型ができました。(この時点では月曜日が普通の弾を打つだけのゲームでした。)
- 実装初期 -
「まぁとりあえず動くものを作ってみるかー。」的な感覚で作り出しました。ですが、「月曜日の弾どうしよう...。ツラそうor苦しそうな弾ってなんだ...?」って悩んだのでとりあえず「疲れたって文字にしとくかー。」的な感じで”疲”という文字を弾をしてみました。
す・る・と...。これがなんとも言えぬシュールさ!画面見るだけで疲れそうなSTGが目の前に!
- 〜実装終盤 -
文字を弾にすることが確定したのでゲームの見た目もシンプルにすることにしました。キャラもピクトグラムにしてみました。
後の細かいことはゲームをプレイしてもらえれば分かると思います(ステマ)
実はTextMeshProとDOTweenでハマったんですが...どこでハマったのか忘れたので、思い出したら記事に直しておきます。
- 実装における感想 -
今回の実装する中で驚いたのはDOTweenですね。「日本語ドキュメントがiTweenより少ないから...」という理由でiTweenから乗り換えるのをビビってましたが...いざ使うと便利すぎて...もっと早く使っておけば...orz
例えば、オブジェクトを上、右、下、左の順に動かしたい!という要求があるとします。
iTweenだと時間を計算して上手く嚙み合うようにしたり、oncompleteで無理やり繋いでいったり...という方法が思いつきますが面倒ですよね。
一方、DOTweenは...Appendで動作を繋いでいくだけなんです!
iTweenを悪く言う訳ではありませんが...DOTweenの方が他の点を考慮しても圧倒的に使いやすかったですね(`・ω・´)値を変更できるTo関数とか!
- 改善したい箇所 -
難易度調整
弾幕の綺麗さを追求したい&弾の種類も増やしたい
下部に文字が出ているが、忙しすぎて読めないと思うのでどうにかしたい
”プレイヤーがブラック企業の社長で、労基にバレない人数の犠牲に抑える”といった案を思いついていたので、そっちの方にシフトしたい
絵付きストーリを曜日間に挟みたい。センスがないので今回は諦め...笑
言わずもがなのランキング(スマホ版で実装すればいいやって思っちゃったのは内緒
- 今後は... -
スマホ版として少し詰めていく予定です。スマホ版出したいので広告突っ込んだり...
すでに続編の案もあったりします。笑
シミュレーション系でブラック企業の社長として何日間逮捕されずに経営できるかというゲームも作りたいなと(^∇^)そっちの方が皮肉がきいて面白そうかなと思っていたり...笑
アセットについて
unity1weekに参加した際にバウチャーを戴いていたのでエディタ拡張系を強化しました。買ったのはいくつかのサイトで好評だったけど、お高めで手が出なかったアセットです(`・ω・´)!
お高めだけど好評なので買ったエディタ拡張
Editor Console Pro
Odin - Inspector and Serializer
気になる方は使い方解説サイトやパブリッシャーが出している動画を覗いてみて下さい。
最後に使用した全てのアセットを以下に一言添えて紹介しておきます。
私自身、今回$150ぐらい有料アセットを購入したので有料なものが多いですが...
ちなみに、中でもおすすめするアセットには ! マークをつけています。
なお、今回は音楽のアセットを使用していません。理由としては【購入する楽曲の一部しか視聴できない】からです。視聴して良いと思ったものでも、他の楽曲が良いがは分からないので見送りました。
違法DL対策なのかもしれませんが、封入されているBGMやSEを全部聞かせて欲しいですね!
アセット紹介
-エディタ拡張-
・2DxFX: 2D Sprite FX !
Spriteにエフェクト付けることが出来る。Imageにも適応できるのでUIも綺麗になる。持ってて損はしないので余裕があればセールで手に入れておくと良い。今回ノイズ画面に使用。
・Editor Console Pro !
こーんな感じのコンソール画面になります!スクリプトが見えるのがとても便利!エディタ拡張の中でTopを争う使いやすさです!今回紹介するエディタ拡張ではトップのおすすめ度です!
・Rainbow Folders
フォルダが色づきます!個人的にやる気が出ます。笑
・Panic Button
無限ループを強制的にストップできます。
・Odin - Inspector and Serializer !
Inspectorが便利になります!一番お気に入りの機能は配列定義すると下の画像のように配列の順番を変更できる機能ですね!
・Hierarchy Tag Icons
Hierarchy上でタグのついたオブジェクトにアイコンを表示できます。視覚的にタグのつけ忘れに気付けるので使用しています。
・Asset Hunter 2
Assetをお掃除してくれます。Asset内のデータ容量が軽くなるなー程度の認識しかありませんが一応使用している感じです (┐「ε:)
・Object Labels / Notes
オブジェクトに付箋が貼れますよ!少しエラーが出るのが気になりますが...
・DOTween Pro !
視覚的にTweenを設定できます。超便利。オブジェクトを曲線的に動かしたい時は必須レベル。
-スクリプト-
・UniRx - Reactive Extensions for Unity
今回初使用。そもそもイベント処理も初だったけど、イベントってすごい便利ですね!(`・ω・´)!
・Uni Bullet Hell
今回の弾幕を生成してくれました。オブジェクトプールも実装されているけど、GameObjectのActive自体を切り替えているのでSpriteとRigidbodyの切り替えより少し処理が重いのが惜しい。
改造しようとしたけど出来ませんでした...笑
-テクスチャ&マテリアル-
・Simple Vector Icons
twitterやランキングアイコンとして用いました。
・Modern & Clean GUI
GUIのスキンとして用いました。無駄が削り落とされているのでシンプルなGUIスキンを探している方にはおススメします!
-公式提供アセット-
・TextMesh Pro !
言わずと知れた有名アセット。今回初使用しました!
UIとしてではなくても文字を生成できるのが一番のお気に入り。
bundle installでpgのインストールエラーが出た時の対処法
タイトルにもあるようにbundle install
でエラーが起きました。
途中部分を端折ってますが以下のようなコンソール画面が出ているはずです。
$ bandle install Fetching gem metadata from https://rubygems.org/...... Fetching https://github.com/rails/webpacker.git Fetching rake 12.1.0 Installing rake 12.1.0 ..... ..... ..... Fetching pg 0.21.0 Installing pg 0.21.0 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. ..... ..... extconf failed, exit code 1 ..... ..... An error occurred while installing pg (0.21.0), and Bundler cannot continue. Make sure that `gem install pg -v '0.21.0'` succeeds before bundling. In Gemfile: pg
原因
pgをインストールするための関連ファイルが足りないことが原因です
環境
解決方法
$ brew install postgresql
上のコマンドで不足しているファイルをインストールしましょう。
これで$ bundle install
を実行してもpg
のエラーを吐かなくなると思います。
注意
extconf failed, exit code 1
がエラーに含まれていなければ直らないかもしれません。その時はMake sure that `gem install pg -v '0.21.0'` succeeds before bundling.
の指示に従ってみてください。
【Unity2017.1】OnTriggerStay2Dが機能しない?!という現象を解決出来る(かもしれない)方法
はじめに
「あれっ...OnTriggerStay2D呼ばれない...。Rigidbody2Dは付いてる。そもそもOnTriggerEnter2Dは呼ばれてるじゃん!もう無理ぽ(´;ω;`)」
という現象を解決出来るきっかけになる記事かもしれません。
解決スタート
現象が発生する条件
以下の二つが同時に生じるとOnTriggerStay2Dが機能しなくなります。
・isTriggerがTrue
・Collider2Dを持つ双方のオブジェクトがどちらも動いてない
なぜ?
isTriggerがTrueになっているオブジェクトは動かないと(処理を軽くするために)sleep状態に入って物理演算対象から外れるようです。OnTriggerStay2Dは物理演算によって判定されているらしいので、双方のオブジェクトがsleep状態に入ってしまうとどちらも物理演算対象から外れてしまい、OnTriggerStay2Dの判定が行われなくなってしまうようです。
解決方法
「isTriggerを解除する!」という方法はあまりにも乱暴なので...他の方法を。
というわけで、Rigidbody2Dコンポーネント内のSleeping ModeをNever Sleepに変更してください。
これでsleep状態に入らなくなるので機能してくれるようになるはずです。その代わり、デメリットとして計算量が増えてしまうので重くなる可能性があります。
おわり
この現象に出会う→解決までに6,7時間程度格闘してしまいました(´・ω・`。)
ちゃんとUnityは内部で計算量をカットするために色々してくれているんですねー。ありがたやー。
そういえば、2Dの内容になっていますが3Dでも一緒だと思いますよ...多分 (┐「ε:)
【Unity2017.1】RectTransformコンポーネントの Width や Height の値をスクリプトから変更する
はじめに
下の画像の赤枠の場所をスクリプトから変更する方法についてです。
変更方法
下画像のようなオブジェクトを考えます。
この時、以下のようなコードで実装できます。
// Inspectorなどから適当に取得してください public GameObject panel; void Sample(){ float w = 任意の値; float h = 任意の値; panel.GetComponent<RectTransform> ().sizeDelta = new Vector2(w, h); }
おわり
Unity使用して初めて必要になって調べたのでメモしてみました(`・ω・´)