Files
beyond/Assets/ThirdParty/PlayMaker/Actions/Transform/SetRandomRotation.cs
2024-11-20 15:21:28 +01:00

55 lines
1.1 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
using UnityEngine;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.Transform)]
[Tooltip("Sets Random Rotation for a Game Object. Uncheck an axis to keep its current value.")]
public class SetRandomRotation : FsmStateAction
{
[RequiredField]
public FsmOwnerDefault gameObject;
[RequiredField]
public FsmBool x;
[RequiredField]
public FsmBool y;
[RequiredField]
public FsmBool z;
public override void Reset()
{
gameObject = null;
x = true;
y = true;
z = true;
}
public override void OnEnter()
{
DoRandomRotation();
Finish();
}
void DoRandomRotation()
{
GameObject go = Fsm.GetOwnerDefaultTarget(gameObject);
if (go == null) return;
Vector3 rotation = go.transform.localEulerAngles;
float xAngle = rotation.x;
float yAngle = rotation.y;
float zAngle = rotation.z;
if (x.Value) xAngle = Random.Range(0,360);
if (y.Value) yAngle = Random.Range(0,360);
if (z.Value) zAngle = Random.Range(0,360);
go.transform.localEulerAngles = new Vector3(xAngle, yAngle, zAngle);
}
}
}