Example #1
0
    // Update is called once per frame
    void Update()
    {
        //count down death timer and destroy if it reaches zero
        if (deathDelay != 0)
        {
            deathDelay--;
            if (deathDelay == 0)
            {
                Destroy(gameObject);
            }
        }

        //update timer and change state
        updateTimer();
        changeState();

        //movement based on state
        if (currentState == EnemyState.Run) //running
        {
            //turn away if not ndelayed by a boundary collision
            //if (currentDelay-- <= 0 && transform.position.x > levelBehavior.WorldMin.x + buffer &&
            //    transform.position.x < levelBehavior.WorldMax.x - buffer &&
            //    transform.position.y > levelBehavior.WorldMin.y + buffer &&
            //    transform.position.y < levelBehavior.WorldMax.y - buffer)
            //{
            if (currentDelay-- <= 0 && player != null)
            {
                //transform.up = (transform.position - player.transform.position);
                directionV = (transform.position - player.transform.position);
                directionV.Normalize();
            }

            //move in new direction
            //transform.position += (Speed * Time.smoothDeltaTime) * transform.up;
            transform.position += (Speed * Time.smoothDeltaTime) * directionV;
        }
        else if (currentState == EnemyState.Stunned) //stunned still
        {
            transform.Rotate(transform.forward, Time.deltaTime * TurnSpeed);
        }
        else if (levelBehavior.Movement) //normal
        {
            //transform.position += (Speed * Time.smoothDeltaTime) * transform.up;
            transform.position += (Speed * Time.smoothDeltaTime) * directionV;
        }

        //check boundary collision
        LevelBehavior.WorldBoundStatus status =
            levelBehavior.ObjectCollideWorldBound(GetComponent <Renderer>().bounds);
        if (status != LevelBehavior.WorldBoundStatus.Inside)
        {
            //Debug.Log("collided position: " + this.transform.position);
            newDirection();
            currentDelay = DELAY;
        }

        //clamp to world
        levelBehavior.ClampToWorld(transform, 1.0f);
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        //move forward
        transform.position += (speed * Time.smoothDeltaTime) * transform.up;

        //check boundary collision
        LevelBehavior.WorldBoundStatus status =
            levelBehavior.ObjectCollideWorldBound(GetComponent <Renderer>().bounds);
        if (status != LevelBehavior.WorldBoundStatus.Inside)
        {
            //Debug.Log("collided position: " + this.transform.position);
            Destroy(gameObject);
        }
    }