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#
		
	
| 
											2 years ago
										 | 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); | ||
|  |         } | ||
|  |     } | ||
|  | } |