Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        switch (state)
        {
        //Lerp in direction
        case ZBuckState.Entering:
            timer += Time.deltaTime / ENTER_TIME;
            transform.position = Vector3.Lerp(transform.position, enterTarget, timer);
            if (timer > 1)
            {
                state = ZBuckState.Standing;
            }
            break;

        //Stand until player is near
        case ZBuckState.Standing:
            if (Vector3.SqrMagnitude(player.transform.position - transform.position) < Player.ZBUCK_COLLECTION_RADIUS)
            {
                timer = 0;
                state = ZBuckState.Exiting;
            }
            break;

        //Lerp to player
        case ZBuckState.Exiting:
            timer += Time.deltaTime / EXIT_TIME;
            transform.position = Vector3.Lerp(transform.position, player.transform.position, timer);
            if (timer > 1)
            {
                FMODUnity.RuntimeManager.PlayOneShot(pickUp);
                player.AddZBucks(value);
                GameManager.Instance.RemoveZBuck(Index);
                state = ZBuckState.Dead;
                gameObject.SetActive(false);
            }
            break;

        case ZBuckState.Dead:
            break;

        default:
            break;
        }

        if (decayTimer >= MAX_TIME)
        {
            GameManager.Instance.RemoveZBuck(Index);
            state = ZBuckState.Dead;
            gameObject.SetActive(false);
        }


        Color col = gameObject.GetComponent <Renderer>().material.color;

        col.a = 0;

        gameObject.GetComponent <Renderer>().material.color = Color.Lerp(gameObject.GetComponent <Renderer>().material.color, col, Time.deltaTime / MAX_TIME);
        decayTimer += Time.deltaTime;
    }
Exemplo n.º 2
0
    /// <summary>
    /// Initialize the zbuck
    /// </summary>
    /// <param name="enterTarget"></param>
    public void Init(Vector3 enterPosition, Vector3 enterTarget, ushort value, int index)
    {
        transform.position = enterPosition;
        Index            = index;
        this.enterTarget = enterTarget;
        timer            = 0;
        decayTimer       = 0;
        state            = ZBuckState.Entering;
        this.value       = value;
        Color col = gameObject.GetComponent <Renderer>().material.color;

        col.a = 1.0f;
        gameObject.GetComponent <Renderer>().material.color = col;
        gameObject.SetActive(true);
    }