Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ScientistDomain.cs contains:
- [Header("Sensors")]
- [ReadOnly]
- [SerializeField]
- private List<INpcSensor> _sensors = new List<INpcSensor>()
- {
- new PlayersInRangeSensor()
- {
- TickFrequency = 0.5f
- },
- new PlayersOutsideRangeSensor()
- {
- TickFrequency = 0.1f
- },
- new PlayersDistanceSensor()
- {
- TickFrequency = 0.1f
- },
- new PlayersViewAngleSensor()
- {
- TickFrequency = 0.1f
- },
- new EnemyPlayersInRangeSensor()
- {
- TickFrequency = 0.1f
- },
- new EnemyPlayersLineOfSightSensor()
- {
- TickFrequency = 0.25f
- },
- new EnemyPlayersHearingSensor()
- {
- TickFrequency = 0.1f
- },
- new CoverPointsInRangeSensor()
- {
- TickFrequency = 1f
- },
- new AnimalsInRangeSensor()
- {
- TickFrequency = 1f
- },
- new AnimalDistanceSensor()
- {
- TickFrequency = 0.25f
- }
- };
- // So in my code I can do:
- BaseEntity baseEntity = GameManager.server.CreateEntity(prefabPath, position, rotation, false);
- ScientistDomain component = baseEntity.GetComponent<ScientistDomain>();
- component.Sensors.Find(s => s is PlayersInRangeSensor).TickFrequency = 60;
- // This means that the NPC will only check for players being in range to aggro onto them every 60 seconds. Of course, shooting a gun nearby or some similar action will still cause the NPC to aggro.
Advertisement
Add Comment
Please, Sign In to add comment