【Unity】ShaderGraphメモ書き(切れ目)
Unity道場2D編 Shader Graph はじめてみよう!実践編(7月13日号) - Unityステーション
上記を見たときの自分用のメモ書きです。
- 切れ目
①Postion(world)をSpkitしてDevideする
DivideのBの2は2m
②Divideの結果をStepに入れる StepのInはSlider
その結果をテクスチャとMultiply
③下側のStepにちょっとだけSliderの値を小さくした値を入れる
④その差分を取ると線になる
⑤色を付けてAddして完了
【Unity】ShaderGraphメモ書き(スキャンライン)
Unity道場2D編 Shader Graph はじめてみよう!実践編(7月13日号) - Unityステーション
上記を見たときの自分用のメモ書きです。
- スキャンライン
①PositionをSplitしたものと、Timeを遅くしたものをAddする
②AddしたものをMultiplyする(ここの20は、1mあたり20本の線)
SquareWaveかFractionにする
後述のStepと組み合わせることでFractionは7:3といった厚みを調整できる
③Fractionの出力をStepする
StepのEdgeは閾値なので、0.61以下は切り捨てられて0になる(=黒くなる)
最後にテクスチャと掛けておしまい
【Unity】ShaderGraphメモ書き(帯電)
Unity道場2D編 Shader Graph はじめてみよう!実践編(7月13日号) - Unityステーション
- 帯電
①Time Multiply TilingOffset で動きを加える
②SimpleNoise Remap Absoluteで電気っぽい物を作る
③Substractで色反転 Saturateで0~1の範囲に Addで組み合わせ
おまけ Noise同士をAddで結合して、波を打ち消す
【Unity】ShaderGraphメモ書き(Lerpアニメーション)
Unity道場2D編 Shader Graph はじめてみよう!実践編(7月13日号) - Unityステーション
- Lerpでアニメーション
LerpのAとBにテクスチャを設定、TはSlider等を使う
【Unity】ShaderGraphメモ書き(色変更)
Unity道場2D編 Shader Graph はじめてみよう!実践編(7月13日号) - Unityステーション
上記を見たときの自分用のメモ書きです。
- 色を変える
①Sample Texture2D をDot Productに入れる
Dot Productはx=2.99 y=5.87 z=1.14
②vector4にDot Productの結果をXYZに、Sample Texture2DのAをWに設定
③Multiplyで色を掛け合わせる
【Unity】ShaderGraphメモ書き(ノイズの横スクロール)
Unity道場2D編 Shader Graph はじめてみよう!実践編(7月13日号) - Unityステーション
上記を見たときの自分用のメモ書きです。
- ノイズを横スクロールさせる
①Time と Vector2
③Tiling And Offset
④Gradient Noise
【Unity】指定範囲内をランダムに移動する
無料アセットの「Fantasy Effect」に、YellowFairyDustというエフェクトがあったのですが、これが特定範囲内をランダムに移動するロジックで組まれていて興味深かったです。
自分のメモ&後で勉強するためにここに一部コードを記載させてもらいます。
FixedUpdateがキモになってそうです
using UnityEngine;
using System.Collections;[RequireComponent(typeof (Rigidbody))]
public class FairyDustRandomPosition : MonoBehaviour {
public float intervalInSec;
public Vector3 minCoord;
public Vector3 maxCoord;
public float speed;
public float maxVelocityMagnitude;
protected Vector3 initPos;
protected Rigidbody rgbd;
protected Vector3 nextPos;public void Awake()
{
rgbd = GetComponent<Rigidbody>();
}public void Start()
{
rgbd.drag = 1;
initPos = transform.position;
InvokeRepeating("GetNextPosition", 0, intervalInSec);
}public void FixedUpdate()
{
if (rgbd.velocity.sqrMagnitude > maxVelocityMagnitude * maxVelocityMagnitude)
return;
Vector3 directionToNextPos;
directionToNextPos = (nextPos - transform.position).normalized;
rgbd.AddForce(directionToNextPos * speed);//Debug.DrawLine(transform.position, nextPos, Color.red);
}public void GetNextPosition()
{
Vector3 tmp;
float x, y, z;
x = Random.Range(minCoord.x, maxCoord.x);
y = Random.Range(minCoord.y, maxCoord.y);
z = Random.Range(minCoord.z, maxCoord.z);
tmp = new Vector3(x, y, z);
nextPos = tmp + initPos;
}
}