You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.4 KiB
C#
41 lines
1.4 KiB
C#
using UnityEngine;
|
|
using Bolt;
|
|
|
|
namespace Game
|
|
{
|
|
[UnitTitle("随机角度")]
|
|
[UnitSubtitle("NodeRandVector")]
|
|
[UnitCategory("Game-Math")]
|
|
public class NodeRandVector : NodeDefault
|
|
{
|
|
public ValueInput vector { get; private set; }
|
|
public ValueInput rot { get; private set; }
|
|
public ValueInput forbidRot { get; private set; }
|
|
public ValueOutput vectorNew { get; private set; }
|
|
protected override void Def()
|
|
{
|
|
vector = ValueInput<Vector3>("vector");
|
|
rot = ValueInput<float>("rot");
|
|
forbidRot = ValueInput<float>("forbidRot");
|
|
vectorNew = ValueOutput<Vector3>("vectorNew");
|
|
}
|
|
protected override void Run(Flow flow)
|
|
{
|
|
var rotHalf = flow.GetValue<float>(rot) * 0.5f;
|
|
var forbidRotHalf = flow.GetValue<float>(forbidRot) * 0.5f;
|
|
var v = flow.GetValue<Vector3>(vector);
|
|
var vNew = v;
|
|
|
|
if (rotHalf != 0)
|
|
{
|
|
if (rotHalf <= forbidRotHalf)
|
|
{
|
|
forbidRotHalf = 0;
|
|
}
|
|
var rotAdd = GameRandom.Random(forbidRotHalf, rotHalf) * GameRandom.RollSymbol(0.5f);
|
|
vNew = Quaternion.AngleAxis(rotAdd, Vector3.up) * v;
|
|
}
|
|
flow.SetValue(vectorNew, vNew);
|
|
}
|
|
}
|
|
} |