- 投稿日:2019-07-19T23:03:48+09:00
Unity チュートリアル(1)play & edit mode
Unityでゲームを作るときの基本手順
・自分のゲームに変更を加える
・自分のゲームをやってみて変更をテストする
gameを繰り返し繰り返し試してみて、どうやってゲームをテストするかを学ぶってことで。
今光ってるウィンドウがシーンビュー
このなかでゲームを作るようだ。
今光ってるウィンドウがgameビュー
プレイヤーがゲームやってるときの画面の見え方はコッチになる。
クリアした。どっちかというとgameビューから見たらどんな感じかを見てみてって感じ。
ここでまとめのようだ。
エディター使ってgameテストしてね、とのこと
プレイモードとエディットモードの動かし方
がこれでわかったねってことらしい。
~おしまい~
- 投稿日:2019-07-19T14:45:10+09:00
テトリスの次にレーシングゲーム作った話
はじめに
こんにちは。ユニバの MJ です。
前回はテトリスを二週間で作った後に、なんと部活動っぽくなりまして、ユニバユニティ倶楽部 略してUUCという糞ダサネームで活動していくことになりました。
そうして今回はレーシングゲームを作ろうかという話になって、大体できたので記事にしようかと思った次第です。
今回のゲームは Maker Faire Tokyo 2019 でプレイできる予定なので、いらっしゃる方がいたら弊社ブースに足を運んでいただければ幸いです。できたもの
今回はシャワーヘッドが爆走するレーシングゲームを作ることになった。
製作期間は大体一か月ぐらい?
案件が入ったりでやっぱり大変だった。
きっかけはメンバの一人がシャワーヘッドを握っていたことに由来。op。 意味ありげなシーン。特に意味はない。
機体セレクト。なるべく高級感を出したかった。普通に店頭販売用のプロモーションにこういうの使ったら面白そう(仕事ください)
レースシーン。シャワーの飛沫が画面にかかるようになっている。非常に不快。
と単純なレーシングゲームではありますが、テトリスの何倍も考えることが多く大変でした。
参加メンバーの皆さんお疲れさまでした。開発メンバ
MJ(おじさん1): 主にロジック担当、今回は画面のざっとした絵作りとかしてみたり、とにかく前に進めることを考える
おじさん2;AI書いたり、周回判定したり
おじさん3:UI置いてくれたり画面つなぎこんでくれたり
おじさん4:音つくってくれたり、フォント選定してくれたり
わかさ1:エフェクトつくってくれたり
わかさ2:ステージつくってくれたり、もろもろ指導してくれたり
わかさ3:シーンロード系の基盤を用意してくれたりみたいな感じ。ウェブ開発より登場人物多いかも!
プロジェクト管理
前回はかなりざっくりとした管理だったので、今回はちょっと力をいれました。
とはいえ、今回もやる気ベースで無理をしない。仕様をざっくり共有する
何はともあれみんなで作るもののイメージを含ませるのは大事
基本的な仕様だったり、どんな質感にするのかだったり、使わないものでもとりあえずまとめたりする。
Miro という最高便利ツールを使ってまとめてます。全体のざっくり仕様まとめ、取り組む課題や今回は妥協するとこなど、自分の取り組む課題の下地に利用する
世界観。実現無理そうなものでもワイワイ話せるのが良い
シーンフロー。予想がたったら、ユニティの世界でどうするか一旦考えたりする。現実味を帯びてきた。
実際こんな感じかな?とうい図。絵が上手いとか下手とかではなく、こういうイメージを持ってますという宣言が大事。
スプレッドシートで最初にスケジュール構想を練りながら毎週何をする予定かを書いたりする
スケジュールシート。時期に対する着地点と、それに対して毎週何をする予定かをまとめる。
他の案件との兼ね合いもあるので無理せず、ゴールをアップデートしながら進めた。というのをしながら進めました。前回よりプロジェクトっぽい装いですね。
今後に向けてと反省
繋がないと盛り上がらない
ユニティ開発というものはある種コンフリクトとの闘いでもあるなと感じていて、いかにお互いが気持ちよくシーンを開発するか?というテーマのもデバッグシーンを一人一個もった状態で開発をつづけました。が、徐々にモチベーションが下がっていく。一人一人の進捗は確実にあるのに。
要するに作業はしてるんだけど、ゲームが出来てないというジレンマが皆の中にあったわけですね。
スケジュールにあった目標は達成はしているんですが、マスタシーンの上で動いていたわけではなかったのです。なので次回はマスタシーンにつなぐ時期とか、完成度 xx% でも一旦入れましょう。
とかそういうところを考えないといけないですね。絵を描くってすごい大事
弊社は基本的に web を主に生業にしている会社なのですが、ウェブサイトというのはある程度フレームが決まっているものです(慣れているだけかもしれないですが、、、)。それに比べてゲームというのは無限の可能性を秘めいているわけで、とにかくシーンの装いの第一歩を決めたり、こういう演出をしたいんだ!と宣言するのが大事ですね。
進行に関して言えば最初はスタートダッシュを切ることはできましたが、そのあとも継続的に妄想を続ける必要があったかな?と思います。
ちなみに私が途中で書いたのがこれ。
エフェクトの感じ。同じような感じにはいかなかったが、勢いは共有できた。
op シーンの元ネタ。常夏な雰囲気がよかったけど、アンニュイな感じに実際はなった。実際作りながら書くというの大変なんですが、やっぱり俯瞰してみたり、勢いを感じれたり、そういうのがゲームという総合作品に関してはより重要になりますね。
最後に
弊社はユニティを使って表現を行い、さらには現実世界とのつながり(ハードウェア)もデザインすることができます。
Maker Faire Tokyo 2019ではシャワーヘッド型コントローラで試遊してもらう想定です。せっかくなのでユニティ案件あると楽しいなと思っているので気軽にお声がけください。
露骨な宣伝になってしまいましたが、ゲーム作りやると凄いノウハウ溜まって楽しいよ!というお話でした。
みんなも作ったもの自慢しよう。
- 投稿日:2019-07-19T09:29:04+09:00
【Unity】Unity Editorかスマホ実機か判別して処理を分ける
はじめに
スマホ実機で毎回動作確認するのが面倒だったので、Unity Editorの場合はキーボード操作ができるようにしました。
サンプルスクリプト
Main CameraにAttachして使用することを想定したスクリプトです。
Unity Editorの場合は、方向キーで視点移動ができるように、
スマホ実機(Unity Editor以外)の場合は、端末を傾けて視点移動ができるようになっています。GyroControllerusing System.Collections; using System.Collections.Generic; using UnityEngine; public class GyroController : MonoBehaviour { // キーボード操作用 private Vector3 rotate; void Start() { // Unityエディタと実機で処理を分ける if (Application.isEditor) { rotate = transform.rotation.eulerAngles; } else { Input.gyro.enabled =true; } } void Update() { // キーボードで視点変更 float speed = Time.deltaTime * 100.0f; // PCは矢印キーで視点変更 if (Application.isEditor) { if (Input.GetKey(KeyCode.LeftArrow)) { rotate.y -= speed; } if (Input.GetKey(KeyCode.RightArrow)) { rotate.y += speed; } if (Input.GetKey(KeyCode.UpArrow)) { rotate.x -= speed; } if (Input.GetKey(KeyCode.DownArrow)) { rotate.x += speed; } transform.rotation = Quaternion.Euler(rotate); } // スマホはジャイロで視点変更 else { Quaternion gratitude = Input.gyro.attitude; gratitude.x *= -1; gratitude.y *= -1; transform.localRotation = Quaternion.Euler(90, 0, 0) * gratitude; } } }最後に
Unity初心者なので、より良い方法や間違いがあったら、是非教えてほしいです。
- 投稿日:2019-07-19T03:02:55+09:00
波長ベース色空間【光の波長をRGBに変換】
概要
色の表現方法にはRGBやHSVなどがあり、これらは人間が色を認識するL・M・S錐体がそれぞれ赤・緑・青に反応することに基づいて色を表現しています。
たしかにRGBやHSVは人間の目に映るあらゆる色を表現できるのですが、この空間で色を変化させても不規則に明るさが変化したりしてそんなにきれいには見えないと思います。
そこで今回は光の波長をRGBに変換する関数を紹介します。これを使ってきれいな虹色を表現してください!
コード
波長とRGBの対応表はCIE1931色空間(http://cvrl.ucl.ac.uk/cmfs.htm) に基づいています。
このコードはShaderLabですが書き換えればGLSLでもHLSLでも使えるはず。。。HLSL
Wave2RGB.cginc//data on http://cvrl.ucl.ac.uk/cmfs.htm static float MinVal = 390.0; static int DataNum = 89; static float Interval = 5.0; static fixed4 CMF[89]={ //fixed4(wavelength,R,G,B)元のデータの構造由来 fixed4(390,1.5000E-03,-4.0000E-04,6.2000E-03), fixed4(395,3.8000E-03,-1.0000E-03,1.6100E-02), fixed4(400,8.9000E-03,-2.5000E-03,4.0000E-02), fixed4(405,1.8800E-02,-5.9000E-03,9.0600E-02), fixed4(410,3.5000E-02,-1.1900E-02,1.8020E-01), fixed4(415,5.3100E-02,-2.0100E-02,3.0880E-01), fixed4(420,7.0200E-02,-2.8900E-02,4.6700E-01), fixed4(425,7.6300E-02,-3.3800E-02,6.1520E-01), fixed4(430,7.4500E-02,-3.4900E-02,7.6380E-01), fixed4(435,5.6100E-02,-2.7600E-02,8.7780E-01), fixed4(440,3.2300E-02,-1.6900E-02,9.7550E-01), fixed4(445,-4.4000E-03,2.4000E-03,1.0019E+00), fixed4(450,-4.7800E-02,2.8300E-02,9.9960E-01), fixed4(455,-9.7000E-02,6.3600E-02,9.1390E-01), fixed4(460,-1.5860E-01,1.0820E-01,8.2970E-01), fixed4(465,-2.2350E-01,1.6170E-01,7.4170E-01), fixed4(470,-2.8480E-01,2.2010E-01,6.1340E-01), fixed4(475,-3.3460E-01,2.7960E-01,4.7200E-01), fixed4(480,-3.7760E-01,3.4280E-01,3.4950E-01), fixed4(485,-4.1360E-01,4.0860E-01,2.5640E-01), fixed4(490,-4.3170E-01,4.7160E-01,1.8190E-01), fixed4(495,-4.4520E-01,5.4910E-01,1.3070E-01), fixed4(500,-4.3500E-01,6.2600E-01,9.1000E-02), fixed4(505,-4.1400E-01,7.0970E-01,5.8000E-02), fixed4(510,-3.6730E-01,7.9350E-01,3.5700E-02), fixed4(515,-2.8450E-01,8.7150E-01,2.0000E-02), fixed4(520,-1.8550E-01,9.4770E-01,9.5000E-03), fixed4(525,-4.3500E-02,9.9450E-01,7.0000E-04), fixed4(530,1.2700E-01,1.0203E+00,-4.3000E-03), fixed4(535,3.1290E-01,1.0375E+00,-6.4000E-03), fixed4(540,5.3620E-01,1.0517E+00,-8.2000E-03), fixed4(545,7.7220E-01,1.0390E+00,-9.4000E-03), fixed4(550,1.0059E+00,1.0029E+00,-9.7000E-03), fixed4(555,1.2710E+00,9.6980E-01,-9.7000E-03), fixed4(560,1.5574E+00,9.1620E-01,-9.3000E-03), fixed4(565,1.8465E+00,8.5710E-01,-8.7000E-03), fixed4(570,2.1511E+00,7.8230E-01,-8.0000E-03), fixed4(575,2.4250E+00,6.9530E-01,-7.3000E-03), fixed4(580,2.6574E+00,5.9660E-01,-6.3000E-03), fixed4(585,2.9151E+00,5.0630E-01,-5.3700E-03), fixed4(590,3.0779E+00,4.2030E-01,-4.4500E-03), fixed4(595,3.1613E+00,3.3600E-01,-3.5700E-03), fixed4(600,3.1673E+00,2.5910E-01,-2.7700E-03), fixed4(605,3.1048E+00,1.9170E-01,-2.0800E-03), fixed4(610,2.9462E+00,1.3670E-01,-1.5000E-03), fixed4(615,2.7194E+00,9.3800E-02,-1.0300E-03), fixed4(620,2.4526E+00,6.1100E-02,-6.8000E-04), fixed4(625,2.1700E+00,3.7100E-02,-4.4200E-04), fixed4(630,1.8358E+00,2.1500E-02,-2.7200E-04), fixed4(635,1.5179E+00,1.1200E-02,-1.4100E-04), fixed4(640,1.2428E+00,4.4000E-03,-5.4900E-05), fixed4(645,1.0070E+00,7.8000E-05,-2.2000E-06), fixed4(650,7.8270E-01,-1.3680E-03,2.3700E-05), fixed4(655,5.9340E-01,-1.9880E-03,2.8600E-05), fixed4(660,4.4420E-01,-2.1680E-03,2.6100E-05), fixed4(665,3.2830E-01,-2.0060E-03,2.2500E-05), fixed4(670,2.3940E-01,-1.6420E-03,1.8200E-05), fixed4(675,1.7220E-01,-1.2720E-03,1.3900E-05), fixed4(680,1.2210E-01,-9.4700E-04,1.0300E-05), fixed4(685,8.5300E-02,-6.8300E-04,7.3800E-06), fixed4(690,5.8600E-02,-4.7800E-04,5.2200E-06), fixed4(695,4.0800E-02,-3.3700E-04,3.6700E-06), fixed4(700,2.8400E-02,-2.3500E-04,2.5600E-06), fixed4(705,1.9700E-02,-1.6300E-04,1.7600E-06), fixed4(710,1.3500E-02,-1.1100E-04,1.2000E-06), fixed4(715,9.2400E-03,-7.4800E-05,8.1700E-07), fixed4(720,6.3800E-03,-5.0800E-05,5.5500E-07), fixed4(725,4.4100E-03,-3.4400E-05,3.7500E-07), fixed4(730,3.0700E-03,-2.3400E-05,2.5400E-07), fixed4(735,2.1400E-03,-1.5900E-05,1.7100E-07), fixed4(740,1.4900E-03,-1.0700E-05,1.1600E-07), fixed4(745,1.0500E-03,-7.2300E-06,7.8500E-08), fixed4(750,7.3900E-04,-4.8700E-06,5.3100E-08), fixed4(755,5.2300E-04,-3.2900E-06,3.6000E-08), fixed4(760,3.7200E-04,-2.2200E-06,2.4400E-08), fixed4(765,2.6500E-04,-1.5000E-06,1.6500E-08), fixed4(770,1.9000E-04,-1.0200E-06,1.1200E-08), fixed4(775,1.3600E-04,-6.8800E-07,7.5300E-09), fixed4(780,9.8400E-05,-4.6500E-07,5.0700E-09), fixed4(785,7.1300E-05,-3.1200E-07,3.4000E-09), fixed4(790,5.1800E-05,-2.0800E-07,2.2700E-09), fixed4(795,3.7700E-05,-1.3700E-07,1.5000E-09), fixed4(800,2.7600E-05,-8.8000E-08,9.8600E-10), fixed4(805,2.0300E-05,-5.5300E-08,6.3900E-10), fixed4(810,1.4900E-05,-3.3600E-08,4.0700E-10), fixed4(815,1.1000E-05,-1.9600E-08,2.5300E-10), fixed4(820,8.1800E-06,-1.0900E-08,1.5200E-10), fixed4(825,6.0900E-06,-5.7000E-09,8.6400E-11), fixed4(830,4.5500E-06,-2.7700E-09,4.4200E-11), }; fixed4 Wave2RGB(float wavelength){ //波長→RGB wavelength = clamp( wavelength, MinVal, MinVal+Interval*DataNum); int index = clamp( (int)(wavelength-MinVal)/Interval, 0, DataNum); float weight = saturate((wavelength - MinVal - index * Interval)/(Interval)); fixed4 output = lerp(CMF[index],CMF[index+1],weight); return fixed4(output.yzw,1.0); } fixed4 Val2RGB(float val){ //01→RGB return Wave2RGB(val*300+390); }wave2color.shaderShader "HOTATE/Wave2Color" { Properties { _Wave ("wave(nm)",range(390,830)) = 500 } SubShader { Tags { "Queue" = "Geometry" "RenderType" = "Opaque"} Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" #include "wave2rgb.cginc" float _Wave; struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD; }; struct v2f { float4 vertex : SV_POSITION; float2 uv : TEXCOORD; }; v2f vert (appdata IN) { v2f output; output.vertex = UnityObjectToClipPos(IN.vertex); output.uv = IN.uv; return output; } fixed4 frag(v2f IN) : SV_Target { return Wave2RGB(_Wave); //return Val2RGB(IN.uv.x); } ENDCG } } }Rainbow.shaderShader "HOTATE/Rainbow" { Properties { _Ypow ("Y曲げ具合",range(0.0,5000.0)) = 1000.0 _Xpow ("X曲げ具合",range(0.0,5000.0)) = 100.0 _Height ("高さ",range(-5000,5000)) = 0.0 _Brightnes ("明るさ",range(0,30)) = 1.0 } SubShader { Tags { "Queue" = "Transparent"} Blend One One Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" #include "wave2rgb.cginc" float _Ypow, _Xpow, _Height, _Brightnes; struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD; }; struct v2f { float4 vertex : SV_POSITION; float2 uv : TEXCOORD; }; v2f vert (appdata IN) { v2f output; output.vertex = UnityObjectToClipPos(IN.vertex); output.uv = IN.uv; return output; } fixed4 frag(v2f IN) : SV_Target { return Wave2RGB(IN.uv.y*_Ypow + (IN.uv.x-0.5)*(IN.uv.x-0.5)*_Xpow + _Height) * _Brightnes; } ENDCG } } }GLSL
wave2rgb解説
多段階線形補完みたいな方法使っているので、これは他にも応用できそう・・・
波長方式だと単純にはループさせられないので、ここはひと工夫必要かと思います。サンプル
虹サンプルのgithubリポジトリ
- 投稿日:2019-07-19T03:02:55+09:00
Wave to RGB【波長をRGBに変換】
概要
色の表現方法にはRGBやHSVなどがあり、これらは人間が色を認識するL・M・S錐体がそれぞれ赤・緑・青に反応することに基づいて色を表現しています。
たしかにRGBやHSVは人間の目に映るあらゆる色を表現できるのですが、この空間で色を変化させても不規則に明るさが変化したりしてそんなにきれいには見えないと思います。
そこで今回は光の波長をRGBに変換する関数を紹介します。これを使ってきれいな虹色を表現してください!
コード
波長とRGBの対応表はCIE1931色空間(http://cvrl.ucl.ac.uk/cmfs.htm) に基づいています。
このコードはShaderLabですが書き換えればGLSLでもHLSLでも使えるはず。。。Wave2RGB.shaderShader "HOTATE/Wave2RGB" { Properties { } SubShader { Tags { "Queue" = "Geometry" "RenderType" = "Opaque"} CGINCLUDE #include "UnityCG.cginc" //data on http://cvrl.ucl.ac.uk/cmfs.htm //fixed4(wavelength,R,G,B)元のデータの構造由来 #define minwave 390.0 #define datanum 89 #define interval 5.0 static fixed4 CMF[89]={ fixed4(390,1.5000E-03,-4.0000E-04,6.2000E-03), fixed4(395,3.8000E-03,-1.0000E-03,1.6100E-02), fixed4(400,8.9000E-03,-2.5000E-03,4.0000E-02), fixed4(405,1.8800E-02,-5.9000E-03,9.0600E-02), fixed4(410,3.5000E-02,-1.1900E-02,1.8020E-01), fixed4(415,5.3100E-02,-2.0100E-02,3.0880E-01), fixed4(420,7.0200E-02,-2.8900E-02,4.6700E-01), fixed4(425,7.6300E-02,-3.3800E-02,6.1520E-01), fixed4(430,7.4500E-02,-3.4900E-02,7.6380E-01), fixed4(435,5.6100E-02,-2.7600E-02,8.7780E-01), fixed4(440,3.2300E-02,-1.6900E-02,9.7550E-01), fixed4(445,-4.4000E-03,2.4000E-03,1.0019E+00), fixed4(450,-4.7800E-02,2.8300E-02,9.9960E-01), fixed4(455,-9.7000E-02,6.3600E-02,9.1390E-01), fixed4(460,-1.5860E-01,1.0820E-01,8.2970E-01), fixed4(465,-2.2350E-01,1.6170E-01,7.4170E-01), fixed4(470,-2.8480E-01,2.2010E-01,6.1340E-01), fixed4(475,-3.3460E-01,2.7960E-01,4.7200E-01), fixed4(480,-3.7760E-01,3.4280E-01,3.4950E-01), fixed4(485,-4.1360E-01,4.0860E-01,2.5640E-01), fixed4(490,-4.3170E-01,4.7160E-01,1.8190E-01), fixed4(495,-4.4520E-01,5.4910E-01,1.3070E-01), fixed4(500,-4.3500E-01,6.2600E-01,9.1000E-02), fixed4(505,-4.1400E-01,7.0970E-01,5.8000E-02), fixed4(510,-3.6730E-01,7.9350E-01,3.5700E-02), fixed4(515,-2.8450E-01,8.7150E-01,2.0000E-02), fixed4(520,-1.8550E-01,9.4770E-01,9.5000E-03), fixed4(525,-4.3500E-02,9.9450E-01,7.0000E-04), fixed4(530,1.2700E-01,1.0203E+00,-4.3000E-03), fixed4(535,3.1290E-01,1.0375E+00,-6.4000E-03), fixed4(540,5.3620E-01,1.0517E+00,-8.2000E-03), fixed4(545,7.7220E-01,1.0390E+00,-9.4000E-03), fixed4(550,1.0059E+00,1.0029E+00,-9.7000E-03), fixed4(555,1.2710E+00,9.6980E-01,-9.7000E-03), fixed4(560,1.5574E+00,9.1620E-01,-9.3000E-03), fixed4(565,1.8465E+00,8.5710E-01,-8.7000E-03), fixed4(570,2.1511E+00,7.8230E-01,-8.0000E-03), fixed4(575,2.4250E+00,6.9530E-01,-7.3000E-03), fixed4(580,2.6574E+00,5.9660E-01,-6.3000E-03), fixed4(585,2.9151E+00,5.0630E-01,-5.3700E-03), fixed4(590,3.0779E+00,4.2030E-01,-4.4500E-03), fixed4(595,3.1613E+00,3.3600E-01,-3.5700E-03), fixed4(600,3.1673E+00,2.5910E-01,-2.7700E-03), fixed4(605,3.1048E+00,1.9170E-01,-2.0800E-03), fixed4(610,2.9462E+00,1.3670E-01,-1.5000E-03), fixed4(615,2.7194E+00,9.3800E-02,-1.0300E-03), fixed4(620,2.4526E+00,6.1100E-02,-6.8000E-04), fixed4(625,2.1700E+00,3.7100E-02,-4.4200E-04), fixed4(630,1.8358E+00,2.1500E-02,-2.7200E-04), fixed4(635,1.5179E+00,1.1200E-02,-1.4100E-04), fixed4(640,1.2428E+00,4.4000E-03,-5.4900E-05), fixed4(645,1.0070E+00,7.8000E-05,-2.2000E-06), fixed4(650,7.8270E-01,-1.3680E-03,2.3700E-05), fixed4(655,5.9340E-01,-1.9880E-03,2.8600E-05), fixed4(660,4.4420E-01,-2.1680E-03,2.6100E-05), fixed4(665,3.2830E-01,-2.0060E-03,2.2500E-05), fixed4(670,2.3940E-01,-1.6420E-03,1.8200E-05), fixed4(675,1.7220E-01,-1.2720E-03,1.3900E-05), fixed4(680,1.2210E-01,-9.4700E-04,1.0300E-05), fixed4(685,8.5300E-02,-6.8300E-04,7.3800E-06), fixed4(690,5.8600E-02,-4.7800E-04,5.2200E-06), fixed4(695,4.0800E-02,-3.3700E-04,3.6700E-06), fixed4(700,2.8400E-02,-2.3500E-04,2.5600E-06), fixed4(705,1.9700E-02,-1.6300E-04,1.7600E-06), fixed4(710,1.3500E-02,-1.1100E-04,1.2000E-06), fixed4(715,9.2400E-03,-7.4800E-05,8.1700E-07), fixed4(720,6.3800E-03,-5.0800E-05,5.5500E-07), fixed4(725,4.4100E-03,-3.4400E-05,3.7500E-07), fixed4(730,3.0700E-03,-2.3400E-05,2.5400E-07), fixed4(735,2.1400E-03,-1.5900E-05,1.7100E-07), fixed4(740,1.4900E-03,-1.0700E-05,1.1600E-07), fixed4(745,1.0500E-03,-7.2300E-06,7.8500E-08), fixed4(750,7.3900E-04,-4.8700E-06,5.3100E-08), fixed4(755,5.2300E-04,-3.2900E-06,3.6000E-08), fixed4(760,3.7200E-04,-2.2200E-06,2.4400E-08), fixed4(765,2.6500E-04,-1.5000E-06,1.6500E-08), fixed4(770,1.9000E-04,-1.0200E-06,1.1200E-08), fixed4(775,1.3600E-04,-6.8800E-07,7.5300E-09), fixed4(780,9.8400E-05,-4.6500E-07,5.0700E-09), fixed4(785,7.1300E-05,-3.1200E-07,3.4000E-09), fixed4(790,5.1800E-05,-2.0800E-07,2.2700E-09), fixed4(795,3.7700E-05,-1.3700E-07,1.5000E-09), fixed4(800,2.7600E-05,-8.8000E-08,9.8600E-10), fixed4(805,2.0300E-05,-5.5300E-08,6.3900E-10), fixed4(810,1.4900E-05,-3.3600E-08,4.0700E-10), fixed4(815,1.1000E-05,-1.9600E-08,2.5300E-10), fixed4(820,8.1800E-06,-1.0900E-08,1.5200E-10), fixed4(825,6.0900E-06,-5.7000E-09,8.6400E-11), fixed4(830,4.5500E-06,-2.7700E-09,4.4200E-11), }; fixed4 Wave2RGB(float wavelength){ wavelength = clamp( wavelength, minwave, minwave+interval*datanum); int index = clamp( (int)(wavelength-minwave)/interval, 0, datanum); float waight = saturate((wavelength - minwave - index * interval)/interval); fixed4 output = lerp(CMF[index],CMF[index+1],waight); return fixed4(output.yzw,1.0); } fixed4 Val2RGB(float val){ return Wave2RGB(val*300+390); } ENDCG Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD; }; struct v2f { float4 vertex : SV_POSITION; float2 uv : TEXCOORD; }; v2f vert (appdata IN) { v2f output; output.vertex = UnityObjectToClipPos(IN.vertex); output.uv = IN.uv; return output; } fixed4 frag(v2f IN) : SV_Target { return Val2RGB(IN.uv.x); } ENDCG } } }あとがき
多段階線形補完みたいな方法使っているので、これは他にも応用できそう・・・
波長方式だと単純にはループさせられないので、ここはひと工夫必要かと思います。
- 投稿日:2019-07-19T00:34:40+09:00
Unityをインストールしたよ
きっかけ
会社の後輩が「ゲーム開発に興味がある」という会話になり
何を使ってみたいのか聞いたところ「Unreal Engine4(通称UE4)」という言葉を初めて知った。
で、
https://gd-navi.com/beginner-create/
へ行って軽く勉強したところ
UE4はUnityやAWS Sumerianと同等の代物だということを知り
我が家の貧弱PCでUE4は難しいかもしれない&C++は未体験すぎて挫折しそうと思い
Unity入れよう!
という大胆な方向転換を実施。
で、今に至ります。我が家のPC環境
PC Inspiron 15
OS Windows10 Home
CPU Intel COre i5-7200U 2.5GHz 2.7GHz
メモリ 8.00GB
SSD 256GB手順
全ては以下のサイトを参考に自分の環境で頑張る!
https://www.sejuku.net/blog/47646まずは、Unityのダウンロード
…早速参考サイトとちょっと違う。
Unity Hubってなんだ!?ってことで少し調べた
「複数のバージョンのUnityエディタを簡単に管理することができるツールです。」
by https://akisnote.com/2018/12/unity-hub/…なるほど!いったん忘れてよさそうだ
[Unityを選択+ダウンロード]をクリック
なんか色々教えてくれそうだ。親切な人だ。。。
「ここから始める」をクリックしたら、急に利用規約が出た、焦った。。。
とりあえず個人使用なら別にタダでいいよ、って意味っぽいので安心してクリック。
ダウンロードしたら「UnityHubSetup.exe」だった。
あれ?UnityHubってバージョン管理するやつかと思ったけど違うのかな?とりあえずありがたく頂戴する。
あと、この後もこの学習サイトに来そうなのでURLをメモ残す。
https://store.unity.com/ja/download-nuoひとまず、さっきダウンロードした
「UnityHubSetup.exe」がインストーラなのかな?
とりあえずクリック。…と思ったらここからが本番か!?改めて[INSTALL]クリック。
インストールの段階でID登録始まるの?!
よくみると、GoogleかFacebookと連携できるようだ。これはありがたい。
あれ…?googleアカウントと連携しようと思ったら、すでにUnity IDもってるよって言ってる?
パスワードはすっかり忘れたので再発行で。
ここからはスマホで再発行をしたので画面は無い。。。
いきなり再発行が完了したところから再開。
なんかテンプレートを用意してくれていきなりどんなゲーム作りたいか聞いてきた!
ちょっとよくわからないけど3Dゲームを選んでおこう
ようやく、準備が整ったようだ。[Launch Unity]クリック
起動画面が出た…ようやくか。。。それにしても起動が長い…2分くらい待ったら画面出た。
最初の画面はコチラ。
いきなりチュートリアルが始まった。ここでやめたかったのに…。
とりあえず最後まで続けよう。
矢印キーを押したらカートが走り出した…いきなりゲームできてる状態なのね。すごいな。
あれ?やめたいんだけど・・・と思ったら3週走って的なこと書いてる。
正気か…とりあえず走ろう。。。
走り終わった。。。けど終わらない。
…よくみると再生ボタンをもう一回押したらよかったのか、ヤレヤレ…
ひとしきり遊んだところで、パラメータを変えようって話になったっぽい。
速度を変更してみよう、とのこと。オブジェクトツリー画面が右側にあるぞ。
このあたりはAWS Sumerianと見た目が似てるのでなんとなくわかる。
25→40に変更。微妙な数字変更なので違いが判らないかもしれない…
数字をいじってから特に保存ボタンとか押してないけど
パラメータは即時反映されるのかな?
早速、再生ボタンを押して的な催促が出た。
実際のところ、数字変化による違いはよく分からなかった…ちょっと失敗かな。。。
ともあれ、なんとなく…ではあるけど、一つのゲームを立ち上げてどこをどういじるのかの雰囲気はつかめたので収穫だと思う。
ようやく、チュートリアルは終了のようだ。長かった…。
なんかwalkthrough2ってのが出てる。クリックしても変化ないのでこれはまた今度ってことで。
ようやく通常の画面に戻ってきた。
ここからはお好きにどうぞってことね。
…と言いながらも右側に案内はあるからきっとまだ続くのだろう。
どこまでも親切だ…。
Unityを終了して初めてアイコンが増えてることに気づいた。
次回はこれをクリックしたらいいのね。
おわりに
意外と長かった。けど、チュートリアルがとにかく親切だった。
初心者向けってことで方々の技術サイトで押されるだけのことはある。
案外自分のPCでも問題なく動いたし、いい感じ。
個人的にはゲームよりも物理演算エンジンとしての使い道に興味があるので
シミュレーション方面で活躍できるような使い方に挑戦してみたいな、と。それと参考URLの手順とは思ったよりも違いが出てた。時期のものってことは分かるけど
どんどんUnityも直感的に扱えるように工夫した成果なんだと思う。
自分も技術ブログを参考にしたのはURLの紹介までであとはほとんど
画面の指示に従っただけだった。本当に親切な世の中になったもんだ。しみじみ。

























































