Esempio n. 1
0
        private void FixedUpdate()
        {
            if (Vector3.Angle(transform.up, Vector3.up) > 60f)
            {
                timeSinceToppled += Time.deltaTime;
                if (timeSinceToppled >= 2f)
                {
                    UnTopple();
                    timeSinceToppled = 0f;
                }
            }
            else if (IsMoving())
            {
                body.angularVelocity = Vector3.zero;
                body.velocity        = Vector3.zero;
            }

            //desiredDir = (desiredDir + GetLevelledDir() * wandering + transform.forward * steering).normalized;
            //MoveTo(desiredDir.normalized, 5, 7);

            switch (brain.OrgState)
            {
            case OrganismState.IDLE: {
                desiredDir = (desiredDir + GetLevelledDir() * wandering + transform.forward * steering).normalized;
                MoveTo(desiredDir.normalized, walkSpeed, rotSpeed);
                break;
            }

            case OrganismState.CHASING_FOOD: {
                if (target != null)
                {
                    desiredDir   = (target.transform.position - transform.position);
                    desiredDir.y = 0f;
                    if (desiredDir.sqrMagnitude > (attackRange * attackRange))
                    {
                        MoveTo(desiredDir.normalized, sprintSpeed, rotSpeed);
                    }
                    else
                    {
                        // Here the body has reached the attack range
                        body.velocity        = Vector3.zero;
                        body.angularVelocity = Vector3.zero;
                        brain.Velocity       = Vector3.zero;
                        brain.OnTargetInAttackRange(target);
                    }
                }
                break;
            }

            case OrganismState.REST: {
                Debug.Log("REST State");
                body.velocity        = Vector3.zero;
                body.angularVelocity = Vector3.zero;
                break;
            }
            }
        }