private double BaseChance(DetectionZone zone, bool premierEssai) { if (premierEssai) { switch (zone) { case DetectionZone.Outside: return(0); // Si changement ici, detectionChance doit etre revise (Outside should not be hit) case DetectionZone.CinqTiles: return(0.3); case DetectionZone.UneTile: return(0.3); case DetectionZone.ZeroTile: return(0.2); } } else { switch (zone) { case DetectionZone.Outside: return(0); case DetectionZone.CinqTiles: return(0.1); case DetectionZone.UneTile: return(0.1); case DetectionZone.ZeroTile: return(0.1); } } return(0); // Unreachable }
// Retourne true si le jet de detection a été reussi. public bool FaireJet(Mobile obs, DetectionZone zone) { DetectionStatus status = DetectionStatus.None; double chance = DetectionChance(obs, zone, ref status); return(JetEtUpdate(obs, chance, status)); }
public bool isVisible(DetectionZone detectionZone, DetectableObject target) { Collider[] overlaps = Physics.OverlapSphere(transform.position, detectionZone.radius); foreach (Collider overlap in overlaps) { if (overlap != null) { if (overlap.transform == target.dObjectTransform) { if (detectionZone.FOVDependable) { Vector3 directionBetween = (target.dObjectTransform.position - transform.position).normalized; directionBetween.y *= 0; float angle = Vector3.Angle(transform.forward, directionBetween); if (angle <= FOVAngle / 2) { Ray ray = new Ray(transform.position, target.dObjectTransform.position - transform.position); RaycastHit hit; if (Physics.Raycast(ray, out hit, detectionZone.radius)) { if (hit.transform == target.dObjectTransform) { detectionZone.zoneHit = true; target.isDetected = true; return(true); } } } } else { Ray ray = new Ray(transform.position, target.dObjectTransform.position - transform.position); RaycastHit hit; if (Physics.Raycast(ray, out hit, detectionZone.radius)) { if (hit.transform == target.dObjectTransform) { detectionZone.zoneHit = true; target.isDetected = true; return(true); } } } } } } target.isDetected = false; return(false); }
public override void _Ready() { base._Ready(); SoftCollision = this.GetChildNodeOrNull <SoftCollision>(); DetectionZone = this.GetChildNode <DetectionZone>(); DetectionZone.Connect(nameof(DetectionZone.TargetSpotted), this, nameof(OnTargetSpotted)); // DetectionZone.Connect(nameof(DetectionZone.TargetLost), this, nameof(OnTargetLost)); PushState(new IdleState(this)); StartPosition = Position; HpIndicator.UpdateHealthIndication(); }
// Use this for initialization void Start() { DoorOBJ = GameObject.Find("Door").GetComponent <Door>(); DZ = DoorOBJ.GetComponentInChildren <DetectionZone>(); gameManage = GameObject.Find("Game Manager").GetComponent <GameManagerScript>(); Forms(); PersonalAttributes(); // print(rangeNum.ToString()); }
// Use this for initialization void Start() { isFalling = false; sustainedTime = 0.3f;//1.5f; playerGroundedTimeToActivate = 0.1f; downSpeed = 0; playerGameObject = GameObject.FindWithTag("Player"); playerController = playerGameObject.GetComponent <PlayerController>(); Transform detectionZoneTransfom = transform.Find("DetectionZone"); if (detectionZoneTransfom) { detectionZone = detectionZoneTransfom.gameObject.GetComponent <DetectionZone>(); } }
// Use this for initialization void Start() { speedForce = 5; movingRight = true; oneDirectionMovingTime = 3; timeLeft = oneDirectionMovingTime; if (SceneManager.GetActiveScene().name == "PlayScene") { playerGameObject = GameObject.FindWithTag("Player"); playerController = playerGameObject.GetComponent <PlayerController>(); } Transform detectionZoneTransfom = transform.Find("DetectionZone"); if (detectionZoneTransfom) { detectionZone = detectionZoneTransfom.gameObject.GetComponent <DetectionZone>(); } }
// Use this for initialization void Start() { DZ = GameObject.FindGameObjectWithTag("Detection").GetComponent <DetectionZone>(); questionText.gameObject.SetActive(false); }
// Use this for initialization void Start() { DZ = GameObject.FindGameObjectWithTag("Detection").GetComponent<DetectionZone>(); questionText.gameObject.SetActive(false); }
private double DetectionChance(Mobile obs, DetectionZone zone, ref DetectionStatus status) { double chance = SkillChance(obs); if (status == DetectionStatus.Jet) { return(chance); } try { status = alentours[obs]; } catch { alentours.Add(obs, DetectionStatus.None); } if (status == DetectionStatus.Visible) { return(0); } switch (zone) { case DetectionZone.Outside: chance = BaseChance(zone, false); // Should never be hit break; case DetectionZone.CinqTiles: switch (status) { case DetectionStatus.None: chance *= BaseChance(zone, true); status = DetectionStatus.Tentative5; break; case DetectionStatus.Deplacement5: chance *= BaseChance(zone, false); status = DetectionStatus.Tentative5; break; case DetectionStatus.Deplacement1: chance *= BaseChance(zone, false); status = DetectionStatus.Test5Dep1; break; case DetectionStatus.Deplacement0: chance *= BaseChance(zone, false); status = DetectionStatus.Test5Dep0; break; default: chance = 0; //On a deja tente pour 5 tiles break; } break; case DetectionZone.UneTile: switch (status) { case DetectionStatus.None: chance *= CombinerChanceJets(new double[] { BaseChance(DetectionZone.CinqTiles, true) , BaseChance(DetectionZone.UneTile, true) }); status = DetectionStatus.Tentative1; break; case DetectionStatus.Tentative5: chance *= BaseChance(zone, true); status = DetectionStatus.Tentative1; break; case DetectionStatus.Deplacement5: chance *= CombinerChanceJets(new double[] { BaseChance(DetectionZone.CinqTiles, false) , BaseChance(DetectionZone.UneTile, true) }); status = DetectionStatus.Tentative1; break; case DetectionStatus.Deplacement1: chance *= CombinerChanceJets(new double[] { BaseChance(DetectionZone.CinqTiles, false) , BaseChance(DetectionZone.UneTile, false) }); status = DetectionStatus.Tentative1; break; case DetectionStatus.Deplacement0: chance *= CombinerChanceJets(new double[] { BaseChance(DetectionZone.CinqTiles, false) , BaseChance(DetectionZone.UneTile, false) }); status = DetectionStatus.Test1Dep0; break; case DetectionStatus.Test5Dep1: chance *= BaseChance(zone, false); status = DetectionStatus.Tentative1; break; case DetectionStatus.Test5Dep0: chance *= BaseChance(zone, false); status = DetectionStatus.Test1Dep0; break; default: chance = 0; // On a deja tente pour 1 tile break; } break; case DetectionZone.ZeroTile: switch (status) { case DetectionStatus.None: chance *= CombinerChanceJets(new double[] { BaseChance(DetectionZone.CinqTiles, true) , BaseChance(DetectionZone.UneTile, true) , BaseChance(DetectionZone.ZeroTile, true) }); break; case DetectionStatus.Tentative5: chance *= CombinerChanceJets(new double[] { BaseChance(DetectionZone.UneTile, true) , BaseChance(DetectionZone.ZeroTile, true) }); break; case DetectionStatus.Tentative1: chance *= BaseChance(DetectionZone.ZeroTile, true); break; case DetectionStatus.Deplacement5: chance *= CombinerChanceJets(new double[] { BaseChance(DetectionZone.CinqTiles, false) , BaseChance(DetectionZone.UneTile, true) , BaseChance(DetectionZone.ZeroTile, true) }); break; case DetectionStatus.Deplacement1: chance *= CombinerChanceJets(new double[] { BaseChance(DetectionZone.CinqTiles, false) , BaseChance(DetectionZone.UneTile, false) , BaseChance(DetectionZone.ZeroTile, true) }); break; case DetectionStatus.Deplacement0: chance *= CombinerChanceJets(new double[] { BaseChance(DetectionZone.CinqTiles, false) , BaseChance(DetectionZone.UneTile, false) , BaseChance(DetectionZone.ZeroTile, false) }); break; case DetectionStatus.Test5Dep1: chance *= CombinerChanceJets(new double[] { BaseChance(DetectionZone.UneTile, false) , BaseChance(DetectionZone.ZeroTile, true) }); break; case DetectionStatus.Test5Dep0: chance *= CombinerChanceJets(new double[] { BaseChance(DetectionZone.UneTile, false) , BaseChance(DetectionZone.ZeroTile, false) }); break; case DetectionStatus.Test1Dep0: chance *= BaseChance(DetectionZone.ZeroTile, false); break; } if (status != DetectionStatus.Visible) { status = DetectionStatus.Tentative0; } break; } if (chance > 1) { chance = 1; } return(chance); }
// Use this for initialization void Start() { DoorOBJ = GameObject.Find("Door").GetComponent<Door>(); DZ = DoorOBJ.GetComponentInChildren<DetectionZone>(); gameManage = GameObject.Find("Game Manager").GetComponent<GameManagerScript>(); Forms(); PersonalAttributes(); // print(rangeNum.ToString()); }