68 lines
1.1 KiB
C#
68 lines
1.1 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine.Events;
|
|
|
|
[AddComponentMenu("Playground/Conditions/Condition Key Press")]
|
|
public class ConditionKeyPress : ConditionBase
|
|
{
|
|
public KeyCode keyToPress = KeyCode.Space;
|
|
|
|
[Header("Type of Event")]
|
|
public KeyEventTypes eventType = KeyEventTypes.JustPressed;
|
|
|
|
public float frequency = 0.5f;
|
|
|
|
private float timeLastEventFired;
|
|
|
|
|
|
|
|
|
|
private void Start()
|
|
{
|
|
timeLastEventFired = -frequency;
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Update()
|
|
{
|
|
switch(eventType)
|
|
{
|
|
case KeyEventTypes.JustPressed:
|
|
if(Input.GetKeyDown(keyToPress))
|
|
{
|
|
ExecuteAllActions(null);
|
|
}
|
|
break;
|
|
case KeyEventTypes.Released:
|
|
if(Input.GetKeyUp(keyToPress))
|
|
{
|
|
ExecuteAllActions(null);
|
|
}
|
|
break;
|
|
case KeyEventTypes.KeptPressed:
|
|
if(Time.time >= timeLastEventFired + frequency
|
|
&& Input.GetKey(keyToPress))
|
|
{
|
|
ExecuteAllActions(null);
|
|
timeLastEventFired = Time.time;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum KeyEventTypes
|
|
{
|
|
JustPressed,
|
|
Released,
|
|
KeptPressed
|
|
}
|
|
|
|
|
|
|
|
} |