示例#1
0
        void Update()
        {
            if (!this._isAlive)
            {
                return;
            }

            Debug.DrawRay(this._eyes.transform.position, this._eyes.transform.forward * this.DNA.ViewingDistance, Color.green);
            Debug.DrawRay(this._eyes.transform.position, this._eyes.transform.up * this.DNA.ViewingDistance, Color.blue);
            Debug.DrawRay(this._eyes.transform.position, -this._eyes.transform.up * this.DNA.ViewingDistance, Color.red);

            this._currentSituation = KnownSituation.Default;

            int          arrowLayerMask = 1 << 10;
            RaycastHit2D hit            = Physics2D.Raycast(this._eyes.transform.position, this._eyes.transform.forward, this.DNA.ViewingDistance, arrowLayerMask);

            if (hit.collider != null)
            {
                if (hit.collider.gameObject.tag == "upwall")
                {
                    this._currentSituation = KnownSituation.HitTopWall;
                }
                else if (hit.collider.gameObject.tag == "downwall")
                {
                    this._currentSituation = KnownSituation.HitBottomWall;
                }
                else
                {
                }
            }
            this._timeAlive += Time.deltaTime;
        }
示例#2
0
        public void Mutate()
        {
            KnownSituation randomSituation = AllKnownSituations[Random.Range(0, AllKnownSituations.Count())];
            KnownAction    randomAction    = AllKnownActions[Random.Range(0, AllKnownActions.Count())];

            this.SituationMap[randomSituation] = randomAction;
        }