Simple DASH Mechanic in Unity

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ธ.ค. 2024
  • You can setup a player dash in like 7 lines of code. It's super easy.
    All you need to do is:
    1. Determine if you can Dash
    2. Increase Player move speed for a set duration
    3. Set an optional cooldown to dash again
    4. Allow the player to dash again
    #unity #movement #tutorial

ความคิดเห็น • 32

  • @rikm2745
    @rikm2745 11 หลายเดือนก่อน +4

    I love the fact you explain what every line does at the end. This makes it clear to me as a total noob exactly what line does what so that I can implement those lines in other methods I'm making. Thank you!

  • @mandamoon9149
    @mandamoon9149 ปีที่แล้ว +10

    Love the simplicity, only 7 lines of code 🤯 like Bmo says, it’s fun to go fast 💨

  • @regys9521
    @regys9521 ปีที่แล้ว +3

    Glad you are back!

  • @Rakadeja
    @Rakadeja 5 หลายเดือนก่อน

    Alright, subscribing. Your tutorials are very chill. Thanks so much!
    Sometimes I over-complicate things, so when I see a guide like this it helps me to comprehend other ways I can accomplish the same thing.

  • @zote1
    @zote1 4 หลายเดือนก่อน +1

    oh my this is so.... love it dude

  • @revmatch6r
    @revmatch6r ปีที่แล้ว

    Yasssss bmo is back 👏 👏 👏

  • @CodingCenter1
    @CodingCenter1 ปีที่แล้ว

    Don't mind but CAN I ASK THAT WHY ARE YOU NOT AN ANGEL, BRO KNOWS EVERTHING. THX SOSOSOSOSOSOSOSOSOSOS Much

  • @senordygus919
    @senordygus919 11 หลายเดือนก่อน +1

    This methods seems hard to to implement in the new input system, do you have any suggestions?

    • @iR3dyOfficial
      @iR3dyOfficial 9 หลายเดือนก่อน +1

      If you still want to know
      Use public InputActionReference actionKey;
      And then in the if statement you’ll do this
      If(actionKey.action.triggered)
      This will act like KeyCode Key, but you will be able to select the input action you created

  • @MajesticMindGames
    @MajesticMindGames ปีที่แล้ว

    Lovely ❤👍

  • @bigp0y
    @bigp0y ปีที่แล้ว

    We all know it should've been the red knight in the thumbnail

  • @Somedudewatchingyoutubee
    @Somedudewatchingyoutubee ปีที่แล้ว +1

    Hey so I tried adapting the tutorial without the shooting mechanic. I used the movement script and it worked but when I tried to implement the dash my character didn’t move anymore and the dash didn’t work either. Unity also didn’t recognise the KeyCode Term. Any help would be appreciated! :]

    • @idabthereforeiam7479
      @idabthereforeiam7479 ปีที่แล้ว

      What input system are you using? The new input system doesn't use the .keycode fuction.

  • @RandomDude00001
    @RandomDude00001 11 หลายเดือนก่อน

    Idk but I have notice that if you collide with something like enemies of walls when you dash the player rotates like crazy how do I fix that? And hey any Idea how to put a cooldown GUI for this?

    • @arcadeii
      @arcadeii 5 หลายเดือนก่อน

      you probably figured this out but im pretty sure you have to check “freeze rotation” in the rigidbody settings ?

  • @ElDonitazz
    @ElDonitazz ปีที่แล้ว

    Can you use character controller?

  • @whyamihere555
    @whyamihere555 ปีที่แล้ว

    The player isn't stopping once the duration is over for me, just continuing to slide.

  • @Apek44
    @Apek44 ปีที่แล้ว +1

    My dash speed variable roesnt make me go faster, its the only thing that doesnt work, no matter what i do it stays constant, i coppied everythign down exactly from this video cause i was so frustrated and it still dont work, maybe its clashign with my other movement code but idk

    • @Apek44
      @Apek44 ปีที่แล้ว

      PLEASE HELP ME BMo IM GOING INSANE TRYING TO FIX THIS BUT BOTHING WORKS

    • @Unknown-nv9so
      @Unknown-nv9so ปีที่แล้ว

      Have you gotten it fixed yet

    • @Apek44
      @Apek44 ปีที่แล้ว

      @@Unknown-nv9so nope. Gave up on fixing that nd decided to do sum else, sorry

    • @danilroiven2428
      @danilroiven2428 ปีที่แล้ว

      I solved it with changing my character movement function to function rb.MovePosition and dashing with increasing value of the speed.
      Like
      rb.MovePosition(rb.position+direction.normalized * speed * Time.fixedDeltaTime); // when player is dashing, speed = dashSpeed, after dash time ends speed = defaultSpeed
      Also it can be done with rb. velocity for both but in my case i did not solve that in a way that gives player little control while dashing. MovePosition method is easier, just increase the speed while dash time is not ended

    • @danilroiven2428
      @danilroiven2428 ปีที่แล้ว

      @@Unknown-nv9so I solved it with changing my character movement function to function rb.MovePosition and dashing with increasing value of the speed.
      Like
      rb.MovePosition(rb.position+direction.normalized * speed * Time.fixedDeltaTime); // when player is dashing, speed = dashSpeed, after dash time ends speed = defaultSpeed
      Also it can be done with rb. velocity for both but in my case i did not solve that in a way that gives player little control while dashing. MovePosition method is easier, just increase the speed while dash time is not ended

  • @LaughingMan44
    @LaughingMan44 ปีที่แล้ว

    is having a coroutine in update not seen as a bad idea?

    • @Apek44
      @Apek44 ปีที่แล้ว

      Why would it be?

  • @shad7270
    @shad7270 3 หลายเดือนก่อน

    The rb isnt speeding up Ive been trying to fix it but i have no idea what is wrong please help.
    using System.Collections;
    using System.Collections.Generic;
    using System.Xml.Serialization;
    using Unity.VisualScripting;
    using UnityEditor.Callbacks;
    using UnityEngine;
    public class MovmentScript : MonoBehaviour
    {
    [SerializeField] private TrailRenderer tr;
    [SerializeField] public Rigidbody2D rb;
    [SerializeField] float movespeed = 5f;
    Vector2 moveDirection;
    Vector2 mousePosition;
    [SerializeField] float dashSpeed = 10f;
    [SerializeField] float dashDuration = 1f;
    [SerializeField] float dashCooldown = 1f;
    bool isDashing = false;
    // Update is called once per frame
    void Update()
    {

    if (isDashing == true)
    {
    return;
    }
    float verticalInput = Input.GetAxis("Vertical");
    float horizontalInput = Input.GetAxis("Horizontal");

    moveDirection = new Vector2 (horizontalInput, verticalInput).normalized;
    mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);

    if (Input.GetKeyDown(KeyCode.LeftShift))
    {
    StartCoroutine(Dash());
    }

    }

    private void FixedUpdate()
    {
    rb.velocity = new Vector2(moveDirection.x * movespeed, moveDirection.y*movespeed);
    Vector2 aimDirection = mousePosition - rb.position;
    float aimAngle = Mathf.Atan2(aimDirection.y, aimDirection.x)*Mathf.Rad2Deg -90f;
    rb.rotation = aimAngle;
    }
    private IEnumerator Dash()
    {
    isDashing =true;

    rb.velocity = new Vector2(moveDirection.x * dashSpeed , moveDirection.y * dashSpeed );
    yield return new WaitForSeconds(dashDuration);
    isDashing = false;
    Debug.Log ("speed applied");
    }
    }

    • @shad7270
      @shad7270 3 หลายเดือนก่อน

      When i press the shift key the only thing that happens it the rb moves in the right direction but will stay the same as the movespeed no matter how much i increase the dashspeed.

  • @federicorodriguez8419
    @federicorodriguez8419 11 หลายเดือนก่อน

    It works fine for me, but I can't run the dash diagonally when I press the up-left and down-right keys, but it works when I press up-right and down-left. Does anyone know why this happens?

    • @arcadeii
      @arcadeii 5 หลายเดือนก่อน

      this is happening to me too, but only with up left and only on the arrow keys, works fine for wasd

  • @PeterSmith-pg7oi
    @PeterSmith-pg7oi ปีที่แล้ว

    "PromoSM" 😉