BlenderモデルがUnityで透明?面が無くなっている場合の対応
左の青い箱は奥側面が透明になって向こう側の方眼が見えています。
一方右側の黄色い箱は突き抜けていません。←Blenderでは黄色になると思って作成しました。
なんで青のパターンになるんだろうとしばらく悩み、何度かモデリングし直したりしたんですが、うまくいったりいかなかったり。でぐぐったらここにたどり着きました。
↓StackOverFlowにも質問があったみたい
http://blender.stackexchange.com/questions/1489/messed-up-blender-models-when-exporting-to-unity3d
Faceの表裏(法線の方向でわかる)が自分が思っていなかった面に向いている場合、Unityではその面を表示しないらしい。解決方法としてはBlender側で面の表裏を整えてあげるとOK!
方法1Control+N でrecalculate Outsideして法線面をすべて外側を向く様に処理を施す。
方法2透明になった面をEditModeで法線面を表示させて該当の面を探し出して、Mesh menu →Normal→Flip Normalsする。
法線は下の様に、normalの面選択ボタンっぽいアイコンをクリックするとでてきます
法線面の方向を示す青い線を注意深くみるとわかった。
さらにコチラの情報を参考にさせていただき、法線面が逆になっていたことが確認でき、対応できました
http://cgnoteblender.blogspot.jp/2011/04/blender-256-normal.html
追記
この件しらべていて今更ながら分かったんですが、今使ってるUnity Version4.5はBlender Version2.7のファイルそのままAssetとしてImportできて使える。いままで.fbxでExportして使ってました。
Unityの教科書 Unity 2018完全対応版 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)
- 作者: 北村愛実
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/06/21
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 作者: Benjamin
- 出版社/メーカー: ソーテック社
- 発売日: 2016/11/19
- メディア: 単行本
- この商品を含むブログを見る
Unity でパチンコ台を作ってみたその1
↓実行結果 ただ玉が出てスタートチャッカーにはいってデジタルが回るってだけです
http://nrtkb.sakura.ne.jp/forblog/unityFolder/PachinkoSWeb.html
Textureちゃんとしたの作って
リーチアクション作って
大当たり処理つくって
釘ちゃんとして
とかやってたら、使ってくれる人いるかな?
作成手順概略
1、枠の作成 Cube + 曲線部分
2、スタートチャッカー、玉吸い込み口(下部)作成
3、釘配置、玉作製、液晶枠作製
4、出目部分作製
5、保留ランプ作製
6、スタートチャッカーと絵柄のスタート停止コーディング
ざっと、こういう流れで作製しましたが、
今後の機能追加は実装自体はらくそうです。
演出をどうやって作ろうか頭が痛い。
Transparent CutOut使ってみる!
実行結果はこちら↓
http://nrtkb.sakura.ne.jp/forblog/unityFolder/transparentcutoffT.html
Photoshopかなにかで下の様に、グラデーションのマスクをかけます。
上で作成した画像ファイルをTextureとしてUnityにAssetにして、Materialを作る時にUnlit Transparent CutOutを選択します。
あとはAlpha CutOffの値をいじるとAlphaの値を境に表示するかしないかをやってくれるので
使い道ありそうですね。
Animationで上記の値を操作できるので楽チンです。
コチラを参考にさせていただきました
http://d.hatena.ne.jp/nakamura001/20130208/1360346901
Depth Maskをつかってみる
やっぱりパチンコのデジタル画面みたいなのを実装する場合は
マスク領域を確保したいのでググっていたらDepth Maskなる物があるという事で使ってみました。
実行結果↓
http://nrtkb.sakura.ne.jp/forblog/unityFolder/depthd.html
画面描写の順番をコントロールする事で実現している?って程度しか理解できちませんが、色んな場面で使えそうです。
参考とさせていただきました。
http://unitygeek.hatenablog.com/entry/2013/04/01/164040
http://wiki.unity3d.com/index.php?title=DepthMask
https://www.youtube.com/watch?v=Lz94SDbpvNc
スロット的な物を実装! 前回とは違ったやり方 Animation Texture編
まずは実行結果↓
http://nrtkb.sakura.ne.jp/forblog/unityFolder/slotPachinkoSample.html
前回は↓コチラのエントリーで、Cameraを複数台使ったバージョンでしたが、やはり処理にコストがかかる事がネックでしたので今回はAnimation Textureでやってみました。
http://appdeappuappu.hateblo.jp/entry/2014/05/20/093253
こちらは、結構簡単で貼付けたtextureのTilingとOffsetをアニメーションでコントロールしていくだけ。
gameObjectの階層で注意する点
いままでオブジェクトの階層構造を意識したことがなかったので、prefabeから大量の同一GameObjectを作成した場合にRayでタッチ判定させたときのタッチされたGameObjectの動きは階層を意識しないと動きを制御できなることに気がつきました。
当然と言えば当然なんですけどね。
自分自身の子オブジェクトを操作する時は
gameObject.transform〜と「gameObject」は小文字で!!!
これはthis.gameObjectの略でスクリプトから見た時のくっついている親ってことですね。
GameObject cube2 = gameObject.transform.FindChild("Shape1").gameObject;
GameObject.Find〜だとShape1を全体(root)から順に詮索して最初のObjectを返します
GameObject cube2 = GameObject.Find("Shape1").gameObject;
GameObjectの階層はまたしっかり勉強することとします。
ちなみにGameObject はClassだからgameObject(this.gameObject)とはそもそも別物ですね。
以下の「gameObjectとGameObjectの違いとは?」を参考にさせていただきました
http://unitylab.wiki.fc2.com/wiki/スクリプト
LineRendererで線を引いてみよう
↓実行結果
http://nrtkb.sakura.ne.jp/forblog/unityFolder/lineRendererWeb.html
こんな感じでオブジェクトを線で結ぶ場合は、LineRenderer compornentsを使用します
両端のobjectが固定の場合(添付画像の緑線でつながっている場合)
1、empty Objectを作成してLineRendererObjectと名前をつける
2、LineRendererObjectにLineRenderer compornentをAddする
3、LineRendererObjectに以下のLineRendererScript1を追加する
4、Cube objectを二つそれぞれCube1,Cube2という名前で設置する
using UnityEngine; using System.Collections; public class LineRendererScript1 : MonoBehaviour { void Start () { } void Update () { GameObject cube_1 = GameObject.Find("Cube1"); GameObject cube_2 = GameObject.Find("Cube2"); LineRenderer lineY = GameObject.Find ("LineRendererObject").GetComponent<LineRenderer> (); lineY.SetPosition(0, cube_1.transform.position); lineY.SetPosition(1, cube_2.transform.position); } }
両端が固定で線をアニメーションさせる場合
1、empty objectを作成し、LineRenderer componentを追加する
2、LineAnimation Scriptを作成しLineRender Componentに追加する
3、始点のSphere、終点のSphereを設置しLineAnimation ScriptのPublic変数をこの二つのobjectで設定する
using UnityEngine; using System.Collections; public class LineAnimation : MonoBehaviour { private LineRenderer lineRenderer; private float count; private float howLong; public Transform saisyo; public Transform kokohe; public float lineDrawSpeed; void Start () { lineRenderer = GetComponent<LineRenderer> (); lineRenderer.SetPosition (0, saisyo.position); lineRenderer.SetWidth (.1f, .1f); howLong = Vector3.Distance (saisyo.position,kokohe.position); } void Update () { if (count < howLong) { count += .1f / lineDrawSpeed; float x = Mathf.Lerp(0,howLong,count); Vector3 pointA = saisyo.position; Vector3 pointB = kokohe.position; Vector3 pointAlongLine = x * Vector3.Normalize(pointB - pointA) + pointA; lineRenderer.SetPosition(1,pointAlongLine); } } }
線の描画がアニメーションかつ繰り返しば場合
線が最長になった時に以下の様にインデックスを0にして線を消す
lineRenderer.SetVertexCount(0);
その後再描写を行う様に
lineRenderer.SetVertexCount(2); lineRenderer.SetPosition (0, origin.position); lineRenderer.material=materials[1];
もう一度インデックスを二つにし、SetPosition,Materialの再設定をおこなう
Unityの教科書 Unity 2018完全対応版 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)
- 作者: 北村愛実
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/06/21
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 作者: 吉谷幹人,布留川英一,一條貴彰,西森丈俊,藤岡裕吾,室星亮太,車谷勇人,湊新平,土屋つかさ,黒河優介,中村優一,牙竜,コポコポ,かせ,hataken,monmoko,佐藤英一
- 出版社/メーカー: ボーンデジタル
- 発売日: 2018/05/01
- メディア: 大型本
- この商品を含むブログを見る
- 作者: 大槻有一郎,いたのくまんぼう
- 出版社/メーカー: エムディエヌコーポレーション
- 発売日: 2016/10/25
- メディア: 単行本
- この商品を含むブログを見る