Exemple #1
0
    // Start is called before the first frame update
    void OnEnable()
    {
        pC = this;

        // col = GetComponent<Collider2D>();
        rb   = GetComponent <Rigidbody2D>();
        anim = GetComponent <Animator>();

        if (boatLight)
        {
            lightAnim = boatLight.GetComponent <Animator>();
        }

        rowFast = false;

        aState = animState.idle;

        bounceDir = Vector2.zero;

        creakTimer = avgCreakTime;

        maxSpeed          = maxSpeedVar.Value;
        fastRowMultiplier = fastRowMultiplierVar.Value;

        // Prevent player from steering for first 3 seconds of scene.
        StartCoroutine(allowSteerTimer(3f));

        // Bind control mappings
        CreatePlayerActions();

        // Default starting health is 3, add extra health for previous failures, carry over health from previous levels if higher.
        currentHealth.Value = Mathf.Max(3 + Mathf.Min(GameController.gC.fails, 2), currentHealth.Value);
    }
Exemple #2
0
    public IEnumerator Disable()
    {
        float i = 0;

        currentState = animState.disabling;
        yield return new WaitForSeconds(randomDelayVal2);

        while ((1f/(enableLength*frameRate)*i) < 1f) {
            i++;
            if (currentState == animState.enabling) break;
            dimmer = 1 - disableCurve.Evaluate((1/(disableLength*frameRate))*i);
            _light.color = Color.Lerp(new Color(0, 0, 0), targetColor, dimmer);
            if (sound != null) sound.volume = soundVol*(1 - disableCurve.Evaluate((1/(disableLength*frameRate))*i));
            if (enableSound != null) enableSound.volume = enableSoundVol;
            if (debugLogness) Debug.Log("disable: " + i + ":" + (1f/(disableLength*frameRate)*i) + " --- " + dimmer, this);
            updateFollowers();
            yield return new WaitForSeconds(1f/frameRate);
        }
        if (currentState == animState.disabling) {
            _light.enabled = false;
            StopSound();
            currentState = animState.none;
        }
        yield return true;
    }
    // Update is called once per frame
    void Update()
    {
        vAxis = Input.GetAxisRaw("Vertical");
        hAxis = Input.GetAxisRaw("Horizontal");

        if(vAxis > 0)
            mystate = animState.Walking;
        else if (vAxis < 0)
            mystate = animState.Reversing;
        else if(vAxis == 0 || hAxis == 0)
            mystate = animState.Idle;
        else if(hAxis > 0 || hAxis < 0)
            mystate = animState.Walking;
        else
            mystate = animState.Idle;

        switch (mystate) {
        case animState.Idle: animation.Play("idle");
            break;
        case animState.Walking: animation.Play("walk");
            break;
        case animState.Reversing: animation.Play ("walk");
            animation["walk"].speed = -1;
            break;
        case animState.Running: animation.Play ("run");
            break;
        case animState.Sidestepping: animation.Play ("jump_pose");
            break;
        default: animation.Play ("idle");
            break;
        }
    }
 public void Idle()
 {
     if (currentAnimState != animState.IDLE)
     {
         anim.Play("idle");
         currentAnimState = animState.IDLE;
     }
 }
 public void Hide()
 {
     if (currentAnimState != animState.EMPTY)
     {
         anim.Play("empty");
         currentAnimState = animState.EMPTY;
     }
 }
 public void BeginAttack()
 {
     if (currentAnimState != animState.ATTACK)
     {
         anim.Play("attack");
         currentAnimState = animState.ATTACK;
     }
 }
Exemple #7
0
    public IEnumerator Enable()
    {
        float i = 0;

        currentState = animState.enabling;
        if (debugLogness)
        {
            Debug.Log("Enable: " + i, this);
        }

        yield return(new WaitForSeconds(randomDelayVal));

        //print("WaitAndPrint " + Time.time);
        StartSound();

        _light.enabled = true;
        while ((1f / (enableLength * frameRate) * i) < 1f)
        {
            i++;
            if (currentState == animState.disabling)
            {
                break;
            }
            dimmer       = enableCurve.Evaluate((1 / (enableLength * frameRate)) * i);
            _light.color = Color.Lerp(new Color(0, 0, 0), targetColor, dimmer);
            if (sound != null)
            {
                sound.volume = soundVol * (enableCurve.Evaluate((1 / (enableLength * frameRate)) * i));
            }
            if (enableSound != null)
            {
                enableSound.volume = enableSoundVol;
            }

            if (debugLogness)
            {
                Debug.Log("enable: " + i + ":" + (1f / (enableLength * frameRate) * i) + " --- " + dimmer, this);
            }
            updateFollowers();
            yield return(new WaitForSeconds(1f / frameRate));
        }
        if (currentState == animState.enabling)
        {
            if (debugLogness)
            {
                Debug.Log("Done: " + i, this);
            }
            currentState = animState.none;
        }
        yield return(true);
    }
Exemple #8
0
    private void OnTriggerStay(Collider other)
    {
        if (other.gameObject.CompareTag("pond") && state != animState.drinking)
        {
            if (ps.thirst < 750)
            {
                state = animState.drinking;
            }
        }

        else if (other.gameObject.CompareTag("bamboo") && state != animState.eating)
        {
            if (ps.hunger < 750)
            {
                state = animState.eating;
            }
        }

        if (ps.thirst >= 1000 || ps.hunger >= 1000)
        {
            state = animState.idle;
        }
    }
Exemple #9
0
    private void AnimationUpdate()
    {
        if (agent.remainingDistance <= 0.05f)
        {
            isWalking   = false;
            ps.directed = false;
        }
        else
        {
            isWalking = true;
        }
        anim.SetBool("walking", isWalking);

        if (!isWalking)
        {
            switch (state)
            {
            case animState.idle:
                anim.SetBool("sitting", false);
                anim.SetBool("eating", false);
                anim.SetBool("sleeping", false);
                anim.SetBool("drinking", false);
                break;

            case animState.sitting:
                anim.SetBool("sitting", true);
                anim.SetBool("eating", false);
                anim.SetBool("sleeping", false);
                anim.SetBool("drinking", false);
                break;

            case animState.eating:
                anim.SetBool("sitting", true);
                anim.SetBool("eating", true);
                anim.SetBool("sleeping", false);
                anim.SetBool("drinking", false);
                ps.eat();
                break;

            case animState.sleeping:
                anim.SetBool("sitting", false);
                anim.SetBool("eating", false);
                anim.SetBool("sleeping", true);
                anim.SetBool("drinking", false);
                break;

            case animState.drinking:
                anim.SetBool("sitting", false);
                anim.SetBool("eating", false);
                anim.SetBool("sleeping", false);
                anim.SetBool("drinking", true);
                ps.drink();
                break;
            }
        }
        else
        {
            anim.SetBool("sitting", false);
            anim.SetBool("eating", false);
            anim.SetBool("sleeping", false);
            anim.SetBool("drinking", false);
        }

        if (state == animState.idle)
        {
            if (UnityEngine.Random.Range(0, 10000) < sleepChance)
            {
                state = animState.sleeping;
            }
            else if (UnityEngine.Random.Range(0, 10000) < sitChance)
            {
                state = animState.sitting;
            }
        }
        else if (state == animState.sleeping)
        {
            if (UnityEngine.Random.Range(0, 10000) < idleChance)
            {
                state = animState.idle;
            }
        }
        else if (state == animState.sitting)
        {
            if (UnityEngine.Random.Range(0, 1000) < idleChance)
            {
                state = animState.idle;
            }
        }

        if (state != animState.drinking && state != animState.eating && !ps.directed)
        {
            if (UnityEngine.Random.Range(0, 1000) < moveChance)
            {
                Vector3 newPos = new Vector3(UnityEngine.Random.Range(-10, 10), 0, UnityEngine.Random.Range(-10, 10));
                ps.SetDestination(newPos, false);
            }
        }
    }
    public void CompleteTentacleAttack()
    {
        tentacleAttackStage?.CompleteTentacleAttack(index);

        currentAnimState = animState.IDLE;
    }
 void Awake()
 {
     anim             = GetComponent <Animator>();
     currentAnimState = animState.EMPTY;
 }
Exemple #12
0
    // Move function
    void MoveCharacter()
    {
        // Disable movement if character recently hit enemy, bounce character away from collision point
        if (isInvulnerable)
        {
            rb.velocity = bounceDir * bounceMag;
            bounceMag  *= 0.95f;
            aState      = animState.idle;
            return;
        }

        if (inputDirection != Vector3.zero)
        {
            lastDirection = inputDirection;
            float      angle    = -90 + Mathf.Atan2(lastDirection.y, lastDirection.x) * Mathf.Rad2Deg;
            Quaternion rotation = Quaternion.Euler(new Vector3(0, 0, angle));
            rb.MoveRotation(Quaternion.RotateTowards(transform.rotation, rotation, rotationSpeed));

            if (rowFast)
            {
                speed  = Mathf.Lerp(speed, maxSpeed * fastRowMultiplier, acceleration * fastRowMultiplier);
                aState = animState.fastRowing;
            }
            else
            {
                speed  = Mathf.Lerp(speed, maxSpeed, acceleration);
                aState = animState.rowing;
            }
        }
        else
        {
            if (isWalking)
            {
                speed = Mathf.Lerp(speed, 0, acceleration * 3);
            }
            else
            {
                speed = Mathf.Lerp(speed, 0, acceleration);
            }

            if (turnLeft)
            {
                rb.MoveRotation(rb.rotation + (rotationSpeed / 2));
            }
            else if (turnRight)
            {
                rb.MoveRotation(rb.rotation - (rotationSpeed / 2));
            }

            aState = animState.idle;
        }

        // Decrease velocity offset by 3x default acceleration if player is not touching a wall
        if (!isTouchingWall && velocityOffset != Vector3.zero)
        {
            velocityOffset += -velocityOffset * acceleration * 3.0f;
            if (velocityOffset.sqrMagnitude < 0.05f)
            {
                velocityOffset = Vector3.zero;
            }
        }

        rb.velocity = transform.up * speed + velocityOffset;
    }