private void Scan() { bool suspiciousActorSeen = false; // Check each player: foreach (PlayerController actor in AlarmSingleton.SuspiciousActors) { Vector3 actorDirection = AlarmSingleton.GetActorTorso(actor) - transform.position; // Check to see if the actor is in the field of view and range of the camera. if (Vector3.Angle(actorDirection, transform.forward) < fieldOfView / 2f && Vector3.Project(actorDirection, transform.forward).magnitude < maxViewDistance) { // Trigger event if this is the first actor seen // and the alarm is not already in a triggered state. if (audioSource.isPlaying == false) { audioSource.PlayOneShot(cameraAlarm); } suspiciousActorSeen = true; if (!isCurrentlyAlarmed) { isCurrentlyAlarmed = true; OnTriggered?.Invoke(actor); } break; } } isCurrentlyAlarmed = suspiciousActorSeen; }
private void OnTriggerEnter(Collider ball) { if (ball.GetComponent <Ball>() != null) { OnTriggered?.Invoke(); } }
/// <summary> /// <para> /// Called by the dialog whenever a TriggerScriptNode is processed, and when the target of this node /// is this script. Basically, this method doesn't do anything but calling the <see cref="OnTriggered"/> /// event. /// </para> /// <para> /// This method is virtual, and thus overridable to enable you to create custom dialog triggers. /// </para> /// </summary> public virtual void Trigger() { if (OnTriggered != null) { OnTriggered.Invoke(); } }
// Update is called once per frame private void OnTriggerEnter2D(Collider2D collision) { Debug.Log( message: name + " end point area reached at: " + transform.position.ToString()); if (collision.tag.Equals("Player") || collision.transform.parent.tag.Equals("Player")) { OnTriggered?.Invoke(); } }
public void ReceiveCharge(int amount) { CurrentCharge += amount; while (CurrentCharge >= ThresholdFinal) { OnTriggered?.Invoke(); OwningEntity.RuneActionTriggered(Text()); Perform(); CurrentCharge -= ThresholdFinal; } }
private void FixedUpdate() { if (alarmEnabled) { // Extends lasers back to full length. for (int i = 0; i < laserInterpolants.Length; i++) { if (laserInterpolants[i] < 1f) { laserInterpolants[i] = Mathf.Min(1f, laserInterpolants[i] + restoreSpeed * Time.fixedDeltaTime); } } // Scan for players. bool suspiciousActorSeen = false; for (int i = 0; i < laserEnds.Length - 1; i += 2) { // Get the ray for each laser. Vector3 laserDirection = Vector3.Lerp(laserEnds[i].position, laserEnds[i + 1].position, laserInterpolants[i / 2]); Ray laserRay = new Ray { origin = laserEnds[i].position, direction = laserDirection - laserEnds[i].position }; // Check the ray against each player. foreach (PlayerController actor in AlarmSingleton.SuspiciousActors) { CapsuleCollider collider = actor.GetComponent <CapsuleCollider>(); // Run a raycast to see if the laser crosses the player. if (collider.Raycast(laserRay, out RaycastHit hit, laserDirection.magnitude)) { // Update the laser interpolant to reflect being intersected by the player. laserInterpolants[i / 2] = Vector3.Distance(hit.point, laserEnds[i].position) / Vector3.Distance(laserEnds[i].position, laserEnds[i + 1].position); // Trigger event if this is the first actor seen // and the alarm is not already in a triggered state. suspiciousActorSeen = true; if (!isCurrentlyAlarmed) { //alarmSource.Play(); isCurrentlyAlarmed = true; OnTriggered?.Invoke(actor); } break; } } } isCurrentlyAlarmed = suspiciousActorSeen; } }
/// <summary> /// Fires the Trigger /// </summary> public void Trigger() { if (!Triggered) { #if DEBUG Debug.Log(name + " Triggered"); #endif OnTriggered?.Invoke(); if (Application.isPlaying && TriggerOnce) { Triggered = true; } } }
public void TripWireTriggeredCallback() { if (disableOnTriggered) { active = false; } //chance = 100; if (chance != 100) { // Less than 100% chance to trigger var r = new Random(); var p = r.Next(100); if (p >= 100 - chance) { OnTriggered.Invoke(this); // Call event } } else { // always 100% chance to trigger OnTriggered.Invoke(this); // Call event } }
protected void Update() { if (Time.timeScale < 1f) { if (switchedOnAudio) { switchedOnAudio.pitch = audioSlowFactor; } if (switchedOffAudio) { switchedOffAudio.pitch = audioSlowFactor; } if (offToOnAudio) { offToOnAudio.pitch = audioSlowFactor; } if (onToOffAudio) { onToOffAudio.pitch = audioSlowFactor; } } else { if (switchedOnAudio) { switchedOnAudio.pitch = 1f; } if (switchedOffAudio) { switchedOffAudio.pitch = 1f; } if (offToOnAudio) { offToOnAudio.pitch = 1f; } if (onToOffAudio) { onToOffAudio.pitch = 1f; } } if (applyDelay) { timeElapsed += Time.deltaTime; if (isOn) { if (timeElapsed >= activationDelay) { OnTriggered?.Invoke(); offToOnAudio?.Stop(); timeElapsed = 0f; applyDelay = false; } else if (offToOnAudio && !offToOnAudio.isPlaying) { offToOnAudio?.Play(); } } else if (timeElapsed >= deactivationDelay) { OnUntriggered?.Invoke(); onToOffAudio?.Stop(); timeElapsed = 0f; applyDelay = false; } else if (onToOffAudio && !onToOffAudio.isPlaying) { onToOffAudio?.Play(); } } }
/// <summary> /// Call the update trigger /// </summary> public void Trigger() { OnTriggered?.Invoke(this); }
protected virtual void ActionCompleted() { OnTriggered?.Invoke(this); }
private void OnTriggerEnter2D(Collider2D collision) { OnTriggered?.Invoke(collision.gameObject); //Alert any subscribers that something stepped on the trigger }
/// <summary> /// Force use the event with the given time /// </summary> public void ForceUse(SavedTime time) { OnTriggered?.Invoke(time); }
/// <summary> /// Force use the event with the current time /// </summary> public void ForceUse() { OnTriggered?.Invoke(MainClock.NowTime); }
/// <summary> /// When the event is triggered /// </summary> /// <param name="timeOfTrigger">Time of the trigger</param> protected void OnEventTrigger(SavedTime timeOfTrigger) { OnTriggered?.Invoke(timeOfTrigger); }
public void Trigger(TSender sender, TData data) { OnTriggered?.Invoke(sender, data); }
public void RaiseOnTriggered() { triggeredInFrame = Time.frameCount; OnTriggered?.Invoke(dclAction); }
protected void invokeTriggeredEvent(InteractionData interactionData, IImpactObject impactObject) { OnTriggered?.Invoke(interactionData, impactObject); }