Forum begins after the advertisement:


[part 10] dive causes unity to freeze completely

Home Forums Video Game Tutorial Series Creating a Metroidvania in Unity [part 10] dive causes unity to freeze completely

Viewing 46 post (of 46 total)
  • Author
    Posts
  • #16110
    Niyam Shah
    Participant
    Helpful?
    Up
    0
    ::

    i dont want to jinx it but it seems to be fixed….. im not experiencing the issue anymore…

    heres the jump script anyway

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class WoodenBotJump : StateMachineBehaviour
    {
    Rigidbody2D rb;

    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
    rb = animator.GetComponentInParent<Rigidbody2D>();
    }

    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {

    DiveAttack();

    }

    void DiveAttack()
    {

    WoodenBot.Instance.Flip();

    Vector2 _newPos = Vector2.MoveTowards(rb.position, WoodenBot.Instance.moveToPosition, WoodenBot.Instance.speed * 3 * Time.fixedDeltaTime);

    rb.MovePosition(_newPos);

    float _distance = Vector2.Distance(rb.position, _newPos);

    if (_distance < 0.1f)
    {
    WoodenBot.Instance.Dive();
    }

    if (WoodenBot.Instance.TouchedWall())
    {
    WoodenBot.Instance.moveToPosition.x = rb.velocity.x;

    _newPos = Vector2.MoveTowards(rb.position, WoodenBot.Instance.moveToPosition, WoodenBot.Instance.speed * Random.Range(2, 4) * Time.fixedDeltaTime);

    }

    }

    override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {

    }

    }`

    heres the new dive script:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class WoodenBotDive : StateMachineBehaviour
    {
        Rigidbody2D rb;
    
        bool callOnce;
    
        // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
        override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
        {
            rb = animator.GetComponentInParent<Rigidbody2D>();
        }
    
        override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
        {
            WoodenBot.Instance.divingCollider.SetActive(true);
    
            if (WoodenBot.Instance.Grounded())
            {
                WoodenBot.Instance.divingCollider.SetActive(false);
    
                if (!callOnce && DivingPillar.count < 10)
                {
                    Debug.Log("callOnce is true");
                    WoodenBot.Instance.DivingPillars();
                    animator.SetBool("Dive", false);
                    WoodenBot.Instance.ResetAllAttacks();
                    callOnce = true;
                }
    
            }
        }
    
        override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
        {
            callOnce = false;
            Debug.Log("CallOnce is false");
        }
    
    }

    thanks so much for your help

    lets hope i dont get any errors with part 10.5………

Viewing 46 post (of 46 total)
  • You must be logged in to reply to this topic.

Go to Login Page →


Advertisement below: