Files
test/Assets/Plugins/Animancer/Examples/06 State Machines/01 Game Manager/GameManagerFSM.IntroductionState.cs
T
2025-09-16 18:07:13 +07:00

68 lines
2.8 KiB
C#

// Animancer // https://kybernetik.com.au/animancer // Copyright 2021 Kybernetik //
#pragma warning disable CS0649 // Field is never assigned to, and will always have its default value.
using Animancer.Units;
using System;
using UnityEngine;
namespace Animancer.Examples.StateMachines.GameManager
{
/// https://kybernetik.com.au/animancer/api/Animancer.Examples.StateMachines.GameManager/GameManagerFSM
///
partial class GameManagerFSM
{
/************************************************************************************************************************/
[SerializeField] private IntroductionState _Introduction;
/************************************************************************************************************************/
/// <summary>Camera orbiting the player, waiting for the player to click.</summary>
/// https://kybernetik.com.au/animancer/api/Animancer.Examples.StateMachines.GameManager/IntroductionState
///
[Serializable]
public sealed class IntroductionState : State
{
/************************************************************************************************************************/
[SerializeField, DegreesPerSecond] private float _OrbitSpeed = 45;
[SerializeField, Meters] private float _OrbitRadius = 3;
/************************************************************************************************************************/
public override string DisplayText => "Welcome to the Game Manager example\nClick to start playing";
/************************************************************************************************************************/
public override void OnEnterState()
{
base.OnEnterState();
Instance._Golfer.EndSwing();
}
/************************************************************************************************************************/
public override void Update()
{
var camera = Instance._Camera;
var euler = camera.eulerAngles;
euler.y += _OrbitSpeed * Time.deltaTime;
camera.eulerAngles = euler;
var lookAt = Instance._Golfer.transform.position;
lookAt.y += 1;
camera.position = lookAt - camera.forward * _OrbitRadius;
if (Input.GetMouseButtonUp(0))
Instance.StateMachine.TrySetState(Instance._Ready);
}
/************************************************************************************************************************/
}
/************************************************************************************************************************/
}
}