Тёмный

Simple DASH Mechanic in Unity 

Подписаться
Просмотров 20 тыс.
% 501

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

Игры

Опубликовано:

 

12 май 2023

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 32   
@rikm2745
@rikm2745 8 месяцев назад
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 Год назад
Love the simplicity, only 7 lines of code 🤯 like Bmo says, it’s fun to go fast 💨
@Rakadeja
@Rakadeja 3 месяца назад
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.
@regys9521
@regys9521 Год назад
Glad you are back!
@zote1
@zote1 Месяц назад
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
@MajesticMindGames
@MajesticMindGames Год назад
Lovely ❤👍
@bigp0y
@bigp0y Год назад
We all know it should've been the red knight in the thumbnail
@whyamihere555
@whyamihere555 Год назад
The player isn't stopping once the duration is over for me, just continuing to slide.
@senordygus919
@senordygus919 8 месяцев назад
This methods seems hard to to implement in the new input system, do you have any suggestions?
@iR3dyOfficial
@iR3dyOfficial 6 месяцев назад
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
@DevAlo
@DevAlo Год назад
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.
@shad7270
@shad7270 21 день назад
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 21 день назад
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.
@RandomDude00001
@RandomDude00001 9 месяцев назад
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 3 месяца назад
you probably figured this out but im pretty sure you have to check “freeze rotation” in the rigidbody settings ?
@federicorodriguez8419
@federicorodriguez8419 9 месяцев назад
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 3 месяца назад
this is happening to me too, but only with up left and only on the arrow keys, works fine for wasd
@ElDonitazz
@ElDonitazz Год назад
Can you use character controller?
@Apek44
@Apek44 Год назад
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 11 месяцев назад
Have you gotten it fixed yet
@Apek44
@Apek44 11 месяцев назад
@@Unknown-nv9so nope. Gave up on fixing that nd decided to do sum else, sorry
@danilroiven2428
@danilroiven2428 10 месяцев назад
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 10 месяцев назад
@@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?
@PeterSmith-pg7oi
@PeterSmith-pg7oi Год назад
"PromoSM" 😉