-
-
Notifications
You must be signed in to change notification settings - Fork 0
Use Key
Henry de Jongh edited this page Mar 10, 2023
·
3 revisions
There are many games that allow the player to use an object, often with the E
-Key.
Here is an example component of how you could implement such a feature into your game. You can attach this component to the camera and press the E
-Key to invoke the "Use" input on any reactive logic component that has a collider.
public class PlayerUse : MonoBehaviour, IReactive
{
[Required IReactive Implementation] // the closed region.
private static ReactiveMetadata _reactiveMeta = new ReactiveMetadata();
private void Update()
{
if (Input.GetKeyDown(KeyCode.E))
{
if (Physics.Raycast(new Ray(transform.position, transform.forward), out var hit, 1f, ~0, QueryTriggerInteraction.Collide))
{
var reactive = hit.collider.gameObject.GetComponent<IReactive>();
if (reactive != null)
{
ReactiveLogicManager.Instance.ScheduleInput(new ReactiveObject(gameObject), this, reactive, "Use", 0.0f, "");
}
}
}
}
public void OnReactiveInput(ReactiveInput input)
{
}
}
We manually call ReactiveLogicManager.Instance.ScheduleInput
because we have a specific IReactive
instance that should receive the "Use" input (and not outputs on this component).
By adding colliders to these buttons it's now possible to press the E
-Key and invoke the "Use" input which presses them:
Logic Components | Terminology | Programming | External Components | |
---|---|---|---|---|
Logic Animator | Activator | Custom Logic | Reactive Dynamic Light | |
Logic Auto | Caller | Custom Inspector | ||
Logic Branch | Delay | Use Key | ||
Logic Case | Target | |||
Logic Collision Pair | User Inputs | |||
Logic Compare | ||||
Logic Counter | ||||
Logic Destroy | ||||
Logic Filter | ||||
Logic Group | ||||
Logic Instantiate | ||||
Logic Log | ||||
Logic Move Linear | ||||
Logic Relay | ||||
Logic Timer | ||||
Logic Trigger | ||||
Logic Unity |