Ejemplo n.º 1
0
    public override ACTION_RESULT ActionUpdate()
    {
        if (interupt == true)
        {
            return(ACTION_RESULT.AR_FAIL);
        }

        Vector3 my_pos = transform.position;

        Vector3 movement = new Vector3(Vector3.Zero);

        if (anim_comp.IsAnimationStopped(animation_clip_push))
        {
            anim_comp.SetTransition("ToIdleAttack");
            Debug.Log("Tile Destiny x: " + target_x + "y:" + target_y, Department.IA, Color.YELLOW);
            move.SetEnemyTile(target_x, target_y);

            movement.x = (target_x * move.tile_size) - my_pos.x;
            movement.z = (target_y * move.tile_size) - my_pos.z;

            movement = (movement.Normalized * move.tile_size * (1 - arrive_comp.min_distance)) * push_velocity;
            transform.SetPosition(my_pos + ((movement * Time.deltaTime) / push_time));

            if (push_timer >= 0.01f)
            {
                push_timer = 0.0f;
                return(ACTION_RESULT.AR_SUCCESS);
            }
            else
            {
                push_timer = push_timer + Time.deltaTime;
                return(ACTION_RESULT.AR_IN_PROGRESS);
            }
        }

        movement.x = (target_x * move.tile_size) - my_pos.x;
        movement.z = (target_y * move.tile_size) - my_pos.z;

        movement = (movement.Normalized * move.tile_size * (1 - arrive_comp.min_distance)) * push_velocity;
        transform.SetPosition(my_pos + ((movement * Time.deltaTime) / push_time));

        return(ACTION_RESULT.AR_IN_PROGRESS);
    }