public static PlayerSense GetRandomWeightedPlayerSense(IList <PlayerSense> playerSenseList) { float totalWeight = 0.0f; foreach (PlayerSense sense in playerSenseList) { totalWeight += sense.Potency; } var randomNumber = rand.NextDouble() * totalWeight; PlayerSense result = null; foreach (PlayerSense sense in playerSenseList) { if (randomNumber < sense.Potency) { result = sense; break; } randomNumber = randomNumber - sense.Potency; } return(result); }
private void OnSceneGUI() { PlayerSense visionComp = (PlayerSense)target; Handles.color = Color.yellow; Handles.DrawWireArc(visionComp.transform.position, Vector3.up, Vector3.forward, 360, visionComp.Radius); Vector3 viewAngleA = visionComp.DirectionFromAngle(-visionComp.ViewAngle / 2, false); Vector3 viewAngleB = visionComp.DirectionFromAngle(visionComp.ViewAngle / 2, false); Handles.DrawLine(visionComp.transform.position, visionComp.transform.position + viewAngleA * visionComp.Radius); Handles.DrawLine(visionComp.transform.position, visionComp.transform.position + viewAngleB * visionComp.Radius); }
public void Start() { _movement = GetComponent<SidescrollingMovement>(); _sprite = GetComponentInChildren<SpriteSystem>(); _sense = GetComponentInChildren<PlayerSense>(); List<State> machineStates = new List<State>{ new State{Condition = () => true, Behavior = Patrol}, new State{Condition = SensePlayer, Behavior = FightOrFlight}, new State{Condition = IsHit, Behavior = BeHit} }; _states = new StateMachine(machineStates); }
public RPGItem(IRPGItem source) { ItemName = source.GetName(); BaseDmg = source.GetBaseDmg(); BaseDef = source.GetBaseDef(); UsesRemaining = source.GetDurability(); ColorSns = source.GetPlayerSense(PlayerSenseType.COLOR); HeatEmission = source.GetTemp(); Enchantment = source.GetEnchantment(); MagicSns = source.GetPlayerSense(PlayerSenseType.MAGIC); NoiseSns = source.GetPlayerSense(PlayerSenseType.NOISE); SmellSns = source.GetPlayerSense(PlayerSenseType.SMELL); Depth = source.GetDepth(); Rarity = source.GetRarity(); }
public PlayerSense GetRoomSense(PlayerSenseType roomSense) { IList <PlayerSense> senses = new List <PlayerSense>(); foreach (IRPGObject obj in objects) { PlayerSense sense = obj.GetPlayerSense(roomSense); if (sense != null) { senses.Add(sense); } } PlayerSense randomSense = RPGUtils.GetRandomWeightedPlayerSense(senses); if (randomSense != null) { return(new PlayerSense(randomSense.Description, randomSense.Potency)); } else { return(new PlayerSense()); } }
// Use this for initialization void Start() { _originalPosition = transform.position; _movement = GetComponent<SidescrollingMovement>(); _animation = GetComponentInChildren<SpriteSystem>(); _hitboxes = GetComponentInChildren<HitboxController>(); _sense = GetComponentInChildren<PlayerSense>(); _states = new StateMachine(new List<State> { new State {Condition = DefaultCondition, Behavior = GuardOriginalPosition}, new State {Condition = SeesPlayer, Behavior = MoveTowardPlayer}, new State {Condition = InRange, Behavior = FenceWithPlayer}, new State {Condition = PlayerIsJumping, Behavior = MoveTowardPlayer}, new State {Condition = IsHit, Behavior = BeHit} }); }
// Use this for initialization protected void Start() { _sense = GetComponentInChildren<PlayerSense>(); _sprite = GetComponentInChildren<SpriteSystem>(); _projector = GetComponentInChildren<ProjectileProjector>(); _webThread = GetComponent<LineRenderer>(); _controller = GetComponent<CharacterController>(); _behaviorFSM = new StateMachine(new List<State> { new State { Condition = DefaultCondition, Behavior = DoNothing}, new State { Condition = SensesPlayer, Behavior = MoveTowardPlayer }, new State { Condition = IsOverPlayer, Behavior = Attack }, new State { Condition = AttackingTarget, Behavior = VerticalGrappling } }); }
public void Start() { _sense = GetComponentInChildren <PlayerSense>(); _sprite = GetComponentInChildren <SpriteSystem>(); }