Как я могу вызвать событие, чтобы заставить поплавок прыгать на увеличенную сумму?
у меня есть несколько вопросов по кодированию на C#, я просто буду задавать их по одному, чтобы это не было слишком длинным.
Мне бы хотелось, когда игрок идет в поле зрения противника, враг бросается на игрока и затем исчезает, вызывая повышение частоты сердечных сокращений на 20 ударов в минуту.
Я думаю, что события, PlayerInViewEvent и RateIncreaseEvent-это то, что будет работать для этого. но я не знаю, как заставить все это работать в коде, и я не знаю, являются ли они даже лучшим способом сделать это. Могу ли я, пожалуйста, получить некоторую помощь в кодировании.
вот код, который у меня есть до сих пор. что в основном просто повышает частоту сердечных сокращений игрока, когда он приближается к врагу, и снижает ее, когда они удаляются от врага.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class HeartRate : MonoBehaviour { public GameObject Player; public GameObject Enemy; float heartRateBase = 80; // 80 BPM public float heartRate = 100; float safeDistance = 5; // distance away form the enemy where heart rate goes down float relaxRate = 0.005f; // how fast the player recovers float stressRate = 0.05f;// The closer the plauer is to the enemy the more it will increase void FixedUpdate() { // Find distance from enemy float dist = Vector3.Distance (Player.transform.position, Enemy.transform.position); // Check to see if player is safe if (dist > safeDistance) { // Decrease player heart Rate if (heartRate > heartRateBase) heartRate -= relaxRate; } else { // Increase the players heart rate depending on how close they are float rate = 1 - dist / safeDistance; heartRate += stressRate * rate; } } }
Что я уже пробовал:
private int JumpRate; public event System.EventHandler ChangeHeartRate; protected virtual void OnHeartChanged() { if (ChangeHeartRate!= null) ChangeHeartRate(this,EventArgs.Empty); } public int heartT { get { return JumpRate; } set { //#3 JumpRate=value; OnHeartChanged(); } }