unity備忘録〜canvasのレンダーモード+α〜
今回はUIについての備忘録を残していきたいと思います。
canvasのrenderモードの3つに書いていきます。
①Screen Space-Overlay
UIがゲーム画面の最も前面に描画されるモードです。必ず一番目に描画されるのでUIとその他のオブジェクトの間での順番を指定することはできません。またこのモードではカメラを削除したとしてもUIのオブジェクトだけは表示されるようです。
②Screen Space-Camera
カメラを指定してそのカメラからUIを描画するモードです。カメラはmaincameraではなくUI用の別のカメラを用意します。MainCameraとUI用のカメラの描画順を設定することが可能でUIオブジェクトをその他のオブジェクトの下に表示することも可能です。
③World Space
UIオブジェクトが他のオブジェクト同様にx,y,zを基準に配置されるモードです。
このモードでは他のオブジェクト同様にテキストを回転や奥行きつけての表示可能です。
ではここからUIのボタン操作イベントを書いてみようと思ったのでですが、
こちらに良さげな記事あったので載せておきます。
marunouchi-tech.i-studio.co.jp
まあ、簡単にまとめると
①ボタン作る
②スクリプト作る(ただし呼び出されるスクリプトのメゾッドはpublicで定義)
③ボタンにスクリプトアタッチする。
④ボタンを押したときにスクリプト呼ばれるようにする。
(ボタンのInspectorにあるButtonコンポーネントのOn Clickが最初はList is Emptyとなっているので、+を押してリストを追加する。)
⑤+を押してリストを追加した後にスクリプトアタッチされたゲームオブジェクトを設定(ここではボタン)とメゾッド(スクリプトで書いてあるもの)を設定する。
以上!!
かなり端折って書いてしまいましたが、上記に載せたブログの方が画像付きで解説してくださっているので、よくわからんという方はそちらを参照お願いいたします。
unity備忘録〜スクリプトからゲームオブジェクトへ〜
今回はスクリプトからゲームオブジェクトにアクセスする方法について備忘録残してきます。
この情報はかなりネット上に転がっているので、検索するとかなりヒットしてきました。
例えば下記の記事など。
この頃の記事でいうと下記のブログが2015年9月25日ということで新しめですね。
marunouchi-tech.i-studio.co.jp
上記の記事を参考に、どうやらゲームオブジェクトを判別する方法は3つあるらしいです。
- ①GameObject.Find()を使用する
- ②GameObject.FindGameObjectWithTag()を使用する
- ③public Gameobjectとしてプロトタイプ宣言しておき、Inspectorから指定する
- ①GameObject.Find()を使用する
GameObject.Find()は引数にダブルコーテーションのシーン上に存在するゲームオブジェクトの名前渡すことで取得できるようです。ただしこのメゾッドは動作が重いらしくupdateの中に書くの推奨されないようです。
②GameObject.FindGameObjectWithTag()を使用する
unityはオブジェクトに対してタグを設定できるので、それを利用したアクセス方法になります。インスペクター上からゲームオブジェクトにタグを設定し、GameObject.FindGameObjectWithTag()使うことでそれを取得してくれるようです。
③public Gameobjectで宣言し、インスペクターから設定する方法。
この方法はfindなどに比べて動作は比較的軽いらしいですが、メモリを最初から確保したりsetActiveがfalseのもの表示してしまうようです。
最後に
いろいろなアクセスの仕方ありますが、それぞれメリット、デメリットもありそうで、使いどころを考え必要がありそうですね。
UnityのRayについての備忘録(自分)
皆様、こんにちは
この頃unityをもう一度触り直しているので、それについて備忘録を載せようと思います。
今回はRayについてです。
Rayはゲーム内で飛ばす光線的なものらしいです。
rayを使えばマウスでのキャラクターの移動先やクリックでキャラをそこに移動させることができるようです。
例えば以下の例はマウスを左クリックした場所に何かする例を書いてみます。
public GameObject prefab; Update(){ if (Input.GetMouseButtonDown (0)) { GameObject cube = cuberepown() //カメラの位置からクリックした位置を知る。 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //角度の補正 Vector3 dir = ray.direction.normalized; //飛ばす処理 (自力でおなしゃす) } } GameObject cuberepown(){ GameObject cube = GameObject.Instantiate (prefab)as GameObject; //インスタンスの位置の生成(自力でおなしゃす) return cube; }
という感じにかけるようにです。
まあ簡単にまとめると
マウスクリックした場所にRayを飛ばして、そのRayと接触しているステージのオブジェクトの位置の座標を取得して、その座標にキャラを飛ばすみたいな感じです。
最後に
またunity関連は載せ始めると思いますが、どうぞ気長にごゆっくり。
ではまた。
http://www.amazon.co.jp/gp/product/4797384433
ソーシャルゲーム雑談〜今キテる「戦の海賊」分解してみた〜
皆さんこんにちは。
昼猫です。
今回は今、僕の中でキテるソーシャルゲーム「戦の海賊」のどこが僕的におもしろいのか考えてみようと思います。
まず『戦の海賊』とは??
『戦の海賊』(センノカ)は、海賊団を率いて、
伝説の秘宝をめぐる大航海へと繰り出す“海洋冒険バトル”です。
様々な船や仲間の海賊を組み合わせて、
自分だけの海賊船団を作り、迫力のリアルタイム海戦に挑みます。海賊団の“アジト”を拠点に、船の増築や、海賊たちの育成は思いのまま!やり込み要素も満載で、“俺の”海賊団作りや、大海原での冒険がとことん楽しめます。
戦の海賊公式ホームページから引用
というゲームです。
SEGAからリリースされたゲームで、現在100万ダウンロード突破を記録しています。
ここからは僕的におもしろいと感じているシステムについてかいていきたいと思います。
①キャラ育成と子分システム!
戦の海賊ではキャラクターの通常強化と昇格(ランクアップ)の他に子分キャラによるステータスの向上が可能になっていきます。つまり通常キャラだけでなく、子分のキャラの厳選と育成にも成長要素が望むことができる。加えて子分のシステムの重要な点として通常クエストで比較的レア度の高い子分キャラがゲットすることができます。
②船の強化
戦の海賊では船の強化において、設計図なるものを船ごとに集めなければなりません。設計図は曜日クエスト、通常クエストをクリアすることゲットすることできます。船を強化するごとに要求される設計図の獲得難易度も高くなるのですが、そこがまたおもしろいです。
③シンプルなバトル
戦の海賊ではバトル中はほぼオートでキャラが勝手に相手を攻撃してくれます。プレイヤーが気をくばることはキャラのスキルゲージが溜まったらスキルを使い、母船の大砲を撃ち、弾が溜まったまた撃つ、ほぼこの二つの動きに集約されます。バトルにおけるプレイヤーの操作工数がゲームに沿いながら極限にシンプルに構成されなおかつ、ライトユーザーからヘビーユーザーを広く包括したバトルシステムになっていると思います。
また、バトルにおいても敵の船との戦いだけでなく、砦を落としたり、バトルのシュチュエーションにもかなりバリエーションがあり、退屈しません。
④シナリオ
普段私は、シナリオをだいたいスキップするのですが、このゲームに関してはみてしまうところがあります。それがなぜなのか正直わかりません笑。ただ比較的、シリアスな感じのシナリオ構成になっており、そこが僕的にはまったのかもしれません。
⑤ゲームのグラフィック
戦の海賊ということだけあり、海の表現にはかなり力を入れてあることが伺えます。波の動きや敵、船の動き細かい部分までこだわりがあっておもしろいなとおもいました。
ラスト
ここまで、戦の海賊について少し書いてきましたが、私が一番言いたいことは次の言葉です。
総合的に分析した時に戦の海賊の特徴を一言であげると「バトルシステムの工数を極限まですくなくしたことによって、バトル以外の育成・アジトの強化にユーザーの力を集中させた」といえるのではないでしょうか。ライトユーザーは今のバトルの工数がベスト、一方でヘビーユーザーは少し物足りなさを感じるかものしれませんが、通常キャラ育成、子分厳選・強化、アジトの強化、船の強化にやり込みの要素に力を注ぐようにコントロールされているのではないでしょうか。つまり、どちらのニーズも埋めていると言えます。
最後に
最近あまり、長く続けていけそうなアプリがなかったので、久しぶりにおもしろそうなアプリが出て楽しみが増えました。
皆さんも是非遊んでみてください。
TECH::CAMPに行ったきた話
皆さん、お久し振りです。<-お前がお久し振りにしてんだろう!!
昼猫です。
夏休み真っ只中ということで、巷で噂のあのプログラム参加してきました。
それがこちら、
私はwebアプリケーションコースのイナズマコースというものを受けていたのですが、どんな感じだったのかといいますと、
最高!!。
プログラミング楽しい!!という気持ちが強くなりました(あくまで個人の感想です)。もちろん期間中は疲れますが、それでもどんどんわかっているという実感できるのは嬉しいことです。
TECH::CAMPが最強な理由
①超実践的なカリキュラム
たいていのプログラミング学習では基本的な文法を覚えて、じゃあ何作ればいいのというところで止まってしまいがちですが、TECH::CAMPではこれを作ってみてくださいというものがしっかり出題されます。しかも少し改造すればwebサービスとして公開できるようなサイトの構築の仕方をしっかり身につくようにカリキュラムが組んでありました。
②超優秀なメンター陣
TECH::CAMPでの学習はすべて個人で進めていくシステムになっているために、自分の知識の浅いところをしっかりと時間をかけて学習することができます。加えて常にメンター陣が控えているため、手あげて一声かければすぐに質問に答えてくれます。(しかも教え方上手!これ重要)
③環境
TECH::CAMPのイナズマコースでは朝の11時から夜の11時までTECH::CAMPのオフイスでこもってコードを書き続けます。プログラミング学習において一番の勉強法はコード書くこと。これに尽きます。無料のお菓子やお茶、コーヒーがセルフサービス、redbullは200円(100円だったかも)で活用できます。(今はどうなってるかわかりません)。
なにより一番いいのは共に超集中してコードを書いている仲間の存在です。すごくモチベーションが維持されます。
上記の他にも細かく言及すればまだたくさんいいたいことはあるのですが、一つ悔やむことがあるとするならば1ヶ月コースでもよかったなと感じています。今回は自分の学習スタイルの考えると、短期超詰め込み+復習でやるのが自分に合っていると思っていたのですが. . . .
と、まあすぎたことは置いといて
最後に
html,css,phpを若干かじったことがあって、「多少知ってるぞ」という意識はあったのですが、僕はどうやらうわべだけ知っていたにすぎず、本質的なは理解できていなかったということを気づくことができました。
TECH::CAMPの謳い文句である「人生をかえる1ヶ月、未来を作るエンジニアになろう」、これは僕の中では「うん!そうだな」という感じで嘘偽りなしと言えるのではないでしょうか!!(あくまで個人の意見です。人それぞれなので)
エンジニアを目指す、そこの学生諸君、とりあえず行って絶対に損はしないと思います。
超絶おすすめです!!