示例#1
0
        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
        }
示例#2
0
        // 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));
        }
示例#3
0
 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();
        }
示例#5
0
    // 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());
    }
示例#6
0
    // 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>();
        }
    }
示例#7
0
    // 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>();
        }
    }
示例#8
0
    // Use this for initialization
    void Start()
    {
        DZ = GameObject.FindGameObjectWithTag("Detection").GetComponent <DetectionZone>();

        questionText.gameObject.SetActive(false);
    }
示例#9
0
文件: Door.cs 项目: RileyH/Door-game
    // Use this for initialization
    void Start()
    {
        DZ = GameObject.FindGameObjectWithTag("Detection").GetComponent<DetectionZone>();

        questionText.gameObject.SetActive(false);
    }
示例#10
0
        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);
        }
示例#11
0
    // 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());
    }