Unity」カテゴリーアーカイブ

ゲームエンジン「Unity」に関するカテゴリーです。

UnityでのZ-fightingの対処方法

重なったポリゴンがチラチラしてみえる現象に悩んでいたところ、これはZ-fightingという現象で、Unityに限らず3DCGでよくある問題なのだそうです。

対策その1

Shaderにデプスオフセットを指定する。

SubShader {
  Offset -1,-1
  ... 以下、略 ...
}

対策その2

カメラのClipping PlaneのNear/Farを狭めに設定する。

対策その3

ポリゴンが重ならないように少し(0.いくつか)ずらす。

リンク

Unity – マニュアル: ShaderLab :カリングと深度テクスチャ
https://docs.unity3d.com/ja/current/Manual/SL-CullAndDepth.html

Unity:シェーダーでZファイティングどうにかする:kelorin joのブロマガ-楽しいもの作らないと死ぬ病気 – ブロマガ
http://ch.nicovideo.jp/kelorinjo/blomaga/ar1128171

【Unity】壁や床の絵がチラチラするアレを何とかする – テラシュールブログ
http://tsubakit1.hateblo.jp/entry/2016/10/26/235900

UnityのAnimationコンポーネントとAnimatorコンポーネントの違い

FAQによると、AnimationコンポーネントとAnimatorコンポーネントの違いは

Animation コンポーネントは 旧アニメーションシステム で使用していた過去の仕組みです。後方互換性のために残してあるだけなので、新しいプロジェクトでは非推奨です。代わりに、最新の Animator コンポーネントを使ってください。

(Animation コンポーネントと Animator コンポーネントの違いは?)
https://docs.unity3d.com/ja/current/Manual/MecanimFAQ.html

ということみたいです。

新規で作る場合はAnimatorの方を使えば良いのかなと思います。

リンク

Unity – マニュアル: アニメーションに関する FAQ
https://docs.unity3d.com/ja/current/Manual/MecanimFAQ.html

Unityでエフェクト等を常に前面に表示する方法

エフェクト等、3D空間での位置関係に無関係に常に前面に表示したい場合に使えるテクニックです。

手順

  1. 前面に表示したいオブジェクトを作成し、Add Layerから適当なLayerを追加・設定する。
  2. カメラを追加して、Clear FlagsDepth onlyに、Depth0に設定する。
    Culling Mask1で設定したLayerに設定する。
  3. 元のMain CameraはDepth-1に設定し、Culling Maskから2で設定したLayerを外す。

リンク

Unity z軸に関係なくダメージを最前面に出したい – とあるプログラマの備忘録
http://raharu0425.hatenablog.com/entry/2015/08/27/111709