If it seems like even after you edit the CharacterController2D script your FirePoint doesn't flip on the y-axis, click on your Local/Global button at the top of the editor. The FirePoint is flipping, but if you have one of those on and not the other, it will appear as if it's not. Regardless, as long as you've inserted the code as instructed, the bullet will come out of the FirePoint in the correct direction no matter if you have Local or Global selected.
Not gonna lie but he is better at speaking then my teachers, he inspires people to do stuff, he makes people positive by his smile dude, i just love watching him
No man, thank you! Thank you for connecting with your viewers even tough you have 570,000 subscribers. It really shows that you're one of those rare youtubers who actually interact with their viewers which makes me feel happy and exited every time I watch your videos!
To be honest, he's definitely the person I'm gonna go to whenever I get started with unity. The videos seem so helpful A different kind of helpful, like I'd actually learn from them
It might be a little late to mention, but if your effect can't dissapear after it finished playing, try these steps: 1. Go to the animation tab of your effect and add an event on frame n+1(3rd block on the right of 'Samples') 2. Create a destroy script and add it under your effect prefab 3. Go to the inspector of the animation event you just added, type 'Destroy' into the function column, no brackets And that shall do the work. My script looks like below: public class DestroyGameObject : MonoBehaviour { public void Destroy() { Destroy(gameObject); } } I got this solution from chat-GPT and it worked like magic. Hope it helps :)
For those who cant get the Firing Point to flip with the sprite, copy lines 114-124 which can be seen seen at 2:47, this ties in with the lines at the bottom.
Interesting, I could not figure this out and somehow managed to get the bullets to switch direction when the player turns but the firepoint is still fixed. So basically it's still broken, I will look into your suggestion. Thank you!!
If u want that the bullet disappears after leaving the camera screen use: public class Bullet : MonoBehaviour { public float speed = 20f; public int damage = 20; public Rigidbody2D rb; public GameObject impactEffect; // Start is called before the first frame update void Start() { rb.velocity = transform.right * speed; } private void OnTriggerEnter2D(Collider2D hitInfo) { Enemy enemy = hitInfo.GetComponent(); if (enemy != null) { enemy.TakeDamage(damage); } Destroy(gameObject); } void OnBecameInvisible() { enabled = false; Destroy(gameObject); } } It's important for the level design i think.
Your tutorials are so easy to follow, and really fun. They are really positive, and user friendly too. You have helped me so much, as a beginner game dev. Thanks Asbjorn! :)
If anyone had an issue with the animation not disappearing after it's end, the solution is to add a script to the gameobject that is animated by it (in that case, impactEffect and destroyEffect) that has a function that destroys the gameobject. Than all you've gotta do is to add an extra frame to the animation and place an animation event that will trigger the destroy function
@@shwk77 Hey, don't know if you were able to fix it or not, but here is what I did. Since we are instantiating a impact/hit effect prefab rather than changing the animation state, you need to attach a script to the hit/impact effect prefab and create a public function which the destroys the gameObject, this function would be called after the final frame of impact effects using the animation event.
@@SDSFDSF631 What I did (a pretty dumb way) is created a script in the destroyEffect prefab in the Start frame like "Destroy(GameObject, 0.5f)" which makes it looks like that destroyEffect dissapeared right after it finished animation, but you can change the time to whatever you feel is right.
For people using the Prefab approach, please do remember to utilize object pooling in order to maximize performance. I believe Brackeys has a video set up for this.
Alright if anyone is wondering how they can get their character to shoot while crouching here's how: 1. Make another firepoint for the crouching position 2. go into the weapon script and change it to this: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Weapon : MonoBehaviour { public Transform firePoint; public GameObject bulletPrefab; public Transform firePointcrouch; // Update is called once per frame private void Update() { if ((Input.GetButton("Crouch") == true && Input.GetButtonDown("Fire1"))) { CrouchShot(); } else if (Input.GetButtonDown("Fire1")) { Shoot(); } void CrouchShot() { Instantiate(bulletPrefab, firePointcrouch.position, firePointcrouch.rotation); } void Shoot() { Instantiate(bulletPrefab, firePoint.position, firePoint.rotation); } } } 3. back into unity, place the crouching firepoint into the new firepoint slot on the weapon component That should make it so you can crouch and shoot.
You SAVED me life. I've been trying for 2 hours to figure how to get the bullet to shoot across. (Using other tutorials) This one nailed it step by step. Thanks!!!!
For anyone trying to get their bullet to shoot forward instead of right, use forward in place of right, or if that doesnt work, use up. You 2D game might be oriented so that forward to your camera view is actually the green axis, or up.
If you have a problem with the animation not disappearing after it's over, the solution is to add a script to the Object "DeathEffect" that has a function that destroys the gameobject after a bit of time (the time the animation takes). This Code worked for me : using System.Collections; using System.Collections.Generic; using UnityEngine; public class DeathEffect : MonoBehaviour {
I know this is an old video so I don't know if you'll see this but this helped me so much. I was at a dead end with my game and it was really disheartening. I felt like I couldn't progress if I hadn't got this part sorted and even though it's not exactly the type of shooting I wanted, I was lucky to find this and I'm glad I switched it out to shooting just along the X axis. Thank you!!
I'm seven minutes in and you're already providing a lot of clarity to my shooting script. Other tutorials works but their rather overly complicated and don't explain much- you fix both issues. Very good job :D
While you wait, there are some cool tutorials about this subject already! :) Here's one: ruclips.net/video/EOSjfRuh7x4/видео.html. This stuff also really helped me a lot: juhakeranen.com/dev-mistakes-pdf/
Tip to prevent lag (if you have large open areas or if it some how gets through a barrier) You can make a script that delays the bullet after a while such as Void start () { Invoke(“despawn”, 20); } Public void despawn () { Destroy(Gameobject); }
I just love your tutorials. Even If I don't really need that at this moment it's so useful and helpful for further struggles. Always find what I was looking for and even more. And you do always smile and make it all interesting. Just great job, thank you :D.
Thank you so much, I just started with Unity and wasn't sure how to create objects that kept the same components. Because of this video I learnt what a Prefab was, which solved my issue.
If anyone has a problem when shoot to right or left and bullet doesn't appear try to modify the position Z = 0 on the FirePoint, it's because bullet spawns out of the camera. PD: Hope this solve your problem :)
Glad to see both of the methods covered! :D I'm personally a RayCast-guy, because Vector performance lol but I use ; Ray ray = new Ray(transform.position , transform.left); RaycastHit Block ; if(Physics.Raycast(ray , out Block , 6f)) { Enemy enemy= Block.transform.GetComponent(); if(enemy != null) { enemy.TakeDamage(10); } }
Amazing, all your tutorials are dope, easy to understand and simply the best unity tutorials. Please provide us with more awesome tutorials like these. Looking forward. Much love😊
If ur enemy doesn't disappear if it's health goes under 0 health just delete the line "Instantiate(deathEffect, transform.position, Quaternion.identity);" in the enemy script.
Can you make a video on how to do 360 degree aiming on a 2D platform game like the one shown here? Making the character's arm and head rotate depending on where your mouse cursor is positioning.
Could you go over the controller script in an upcoming video? It would be really helpful to understand what's happening in it step-by-step so when we start our own projects we don't have to rely on other people's scripts
Using colliders on the bulletsbis quite inefficient. It is much better to do a linecast from the bullet's last position to it's current one. This also means you can make bullets that can go through walls and find the out point.
On your bullet script, you have a variable that keeps track of the last position it was in. Every frame you do a linecast from the last position, to the current position. If the bullet collided with something during that last frame of movement, the linecast will pass through what the bullet hit. This solves the collision system not resolving a hit, because no matter how far the bullet travels in that one frame, the linecast will still pass through whatever the bullet hit. Regarding the wall part, if you want penetration, when you do the linecast, you can check if the linecast passed through a wall. If it did, you can use vector math to figure out where the bullet came out of the wall and at what angle.
@cooldude 4172 I don't have any experience with that engine, but a quick google search brought up the collision_line method which may help you docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/collisions/collision_line.html
Quick tip: Add a float: impactEffectTime This is the time the impact effect animation plays, roughly. The effect should end on an invisible frame, so it doesn't show, but if you look at the inspector, the prefab is still there. After a few thousand shots, this could slow down your game. With a timer of, say, half to one second, you could destroy the effect prefab as well. By having this as a variable, you can use much longer effects, in case you have special weapons with much longer effects in the future. Like a rocket with secondary explosions. This will then clean up the effect prefabs for you and you shouldn't have more than maybe 10 effect prefabs at any given time, and no significant impact on performance. To implement, just copy the Destroy command from the bullet itself, place right before the bullet, change the variable name from the bullet game object to the effect game object and add the timer as a second parameter. It looks like it would destroy the effect prefab first, but the second parameter is actually a timer, so the bullet would be destroyed instantly, and the effect would be destroyed impactEffectTime seconds later.
I had the same problem, i downloaded an empty png then add it to end of the impact animation and enemy death animation it fixed mine but im sure there is much better solution
Brackeys. I know this request might be pointless, but could you please, I beg you, make tutorial with shader graph related to rain ripples and rainy window drops and if you find time, character that looks like a ghost, but shaped like character :)
Hi, If someone could help me, I am doing the prefab method but whenever I shoot the bullet just stops in front of the enemy and doesn't destroy or print Enemy(or "Frog" in my case) in the console.
im a big fan of your videos. i've seen all your videos so far! and learned almost EVERYTHING of unity with you. Can you make a tutorial for a turn based combat like final fantasy or any rpg turn based?
19:50 if you want to wait for exactly 1 frame, then imo it's more accurate to use yield return Time.deltaTime because that's the length of the last frame. of course it's not 100% accurate because of varying frame lengths but it should be closer than 0.02 seconds
Sir, this, like all of your other tutorials are INCREDIBLE and AWESOME! Thank you for sharing your genius with the rest of us. I think it would be awesome to see a tutorial on how to create a map for 2D games like we see in Metroidvania games like Metroid, Symphony of the Night, Shadow Complex, etc. (tutorials on this subject on the internet are lacking as a whole). Thanks! :)
thank GOD u corrected that character controller part, i used that 2d movement script and couldnt for the life of me figure out why my player was acting drunk af
Thanks bro. Just one request from me - you can leave it if you don't find it worth teaching. Can you make video on a game where we hit the api to send data to server and then again hit the get api to receive the data back from server... It could be a series of tutorials where first we login through social media and save our email and pswd to server and then save the details of user like coins,win%,powerups,loose% etc. What do you think ?
In your animations, attach a collider trigger and animate it to follow the weapon, then apply damage with that collider similar to how the bullet detects impacting an enemy
that's a good start but how should i go about balancing the weight of my enemies and forces of each attack to allow for things like juggle combos, launchers, wall bounce, these kinds of things?
@@guigondi7671 well you could make it that when you perform a launching attack it moves the enemy up a certain distance, and that when you when you attack an enemy they enter a stagger animation that keeps them from attacking. Each hit could move the enemy up a certain distance to keep them in the air, or each hit could freeze them in place for a split second so you can continue your combo. Then make the last hit of your combo a finisher that launches the enemy far away so that you can't do zero to death combos. Understanding basic physics equations like the kinematic equations, and work will help you precisely control the physics of the combo system to make it feel the way you want.
BEST shooting tutorial for 2D out there, thank you! I got a question tho and I really hope you'll answer, how did you turn the impact animation into a useable prefab? I'm banging my head over this and it should'nt be so hard haha
3 ways to do it... Using ray-cast but spawning a prefab to follow from birth to end of ray cast! Making it more realistic and good! And you can easily adjust speed of following or reduce or what ever lol! Its very effective, stable and great way to make a battlefield 4 like shooter! (Realistic) the key between the two lol
Danian D. No problemo! But i havent tested it yet, i see no reason this wiuldnt work, infact the first point he said which was the one i used in my 2d game and believe me... that was messy lol...specially with my inability to understand a good approach to coding! But his method i believe is closer to the perfection that is real life physics!
Lol, that’s just the same as using a prefab. The only difference is the mode of travel for the prefab. Real life physics also have bullet drop, so that method alone wouldn’t make anything more realistic.
I think he meant more stable because the hit calculation doesn't rely on an actual prefab flying towards the target. Knowing some of the weird glitches with physics in game engines, raycast seems like the safer alternative. Also let's you do whatever you want with the now-only visual bullet prefab.
To people who have trouble with gunpoint flipping issue(Gun point changing direction) you can use this Have 2 Variables private bool isFacingRight = true; private bool isFacingLeft = false; Then the rest of the logic is below Also this is a script if you designed your player facing right if (movementX > 0) { anim.SetBool(WALK_ANIMATION, true); anim.SetBool(JUMP_ANIMATION, false); if (isFacingRight == true) { transform.Rotate(0f, 0f, 0f); isFacingRight = true; isFacingLeft = false; } else { transform.Rotate(0f, 180f, 0f); isFacingRight = true; isFacingLeft = false; } } else if (movementX < 0)//we are going to the left { anim.SetBool(WALK_ANIMATION, true); anim.SetBool(JUMP_ANIMATION, false); if (isFacingLeft == true) { transform.Rotate(0f, 0f, 0f); isFacingLeft = true; isFacingRight = false; } else { transform.Rotate(0f, 180f, 0f); isFacingLeft = true; isFacingRight = false; } } Note: The anim.SetBool stuff are my animation code you can ignore that but the logic should work Hope it helps anyone :D
I have a really big problem! After I create OnTriggerEnter2D, when I play the game my bullet just shows up in front of me for a split second then disappears. I would imagine this happens because the bullet doesn't know what is an enemy or not. Can someone please tell me how I can fix this problem?
Found a better solution for what Brackeys talks about at 3:00 private void Flip() { // Switch the way the player is labelled as facing. m_FacingRight = !m_FacingRight; if (m_FacingRight) { transform.localRotation = Quaternion.Euler(0, 0, 0); } else { transform.localRotation = Quaternion.Euler(0, 180, 0); } } Quaternion.Euler rotations are better for when you want to control the aim with your mouse, his way works fine for what he's doing but I think this is better for other projects.
I have run into a problem, for both the enemy and the projectile the last frame of the deathEffect/impactEffect lingers on screen permanently. Can some one help please?
For people who want the shots to not affect the player, here is a fix: in the bullet rigidbody, press layer overrides, then add a new layer called player to the excludes. add the player to this layer, and the bullet will ignore it.
Try using this public class Gun : MonoBehaviour { public Transform firePoint; public GameObject bulletPrefab; public float Cooldown1 = 0f; // Update is called once per frame void Update() { Cooldown1 -= Time.deltaTime; if (Input.GetButtonDown("Fire1")) { if (Cooldown1
I like how you did it with different assets, coz then if we wish to essentially follow, we have to redo everything with the new asset. And so it helps us Rerember and stuff. Pretty meet idea.
Great tutorial, but one personal problem I'm having is that my bullets like to be invisible. Now I understand their new to the world, but I kind of don't like it when their invisible...
Hello Guys if u have the same struggle like that the animation dont want to dissapear create the effects new and add a script in that script u will put in using System.Collections; using System.Collections.Generic; using UnityEngine; public class Destroy : MonoBehaviour { void Update() { Destroy(gameObject,0.5f); } } and then i will dissapear quickly :) hope i had can help anyone :)
Hi! Can someone help me? I've been trying to add an animation when my character is shooting but I can't find a way to make it work... Either the character stays stuck at the end of the animation or the animation straight up doesn't play ;^; I've tried animation events and pretty much everything else...
for the "the character stays stuck at the end of the animation " problem, destroy the character animation when it's done and instantiate the origional object
heres a quick tip if you're using the prefab method to save you lots of performance copy and paste these lines of code private float time = 1; private GameObject instantiatedObj; delete the whole instantiate bulletPrefab line and replace it with this instantiatedObj = (GameObject)Instantiate(bulletPrefab, transform.position, transform.rotation); Destroy(instantiatedObj, time); You canno't destroy a prefab to save loss so this creates a clone you're welcome :) this also works with everything
If you get the message * Input Error:“Fire1” button is unknown * In the Unity Console. Change Input.GetKeyDown("Fire1") to: Input.GetButtonDown("Fire1") You are God and Win, Brackeys. Wish you'd update your Unity catalog, as the Unity Input Action Manager is *way* better. However, I understand your reasons.
@@iwant2tryhard337 Yeah you could just make a sprite with that explode animation, make it play wants it enters the scene (and if you want to make it so that it deletes itself once it's done to save on space) and then juts turn it into a prefab.
10:54
"Then we want to die"
- Brackeys 2018
"well then we want to..., Die"
ftfy
Story of my life
And then:
"I live... again!"
@@igorthelight Then off in the distance:
"CRUDUX CRUO!"
@@johndobersworth4224 Right :-)
Glad to see both of the methods covered! :D I'm personally a prefab-guy, because screw performance lol
Object Pooling my dude.
really?? performance is my top priority than anything else, like MY GAWD!!
yea, its the real sykoo, so what??
no! friend
Screw performance?
Well not like you are making anything performance intensive like triple a titles.
If it seems like even after you edit the CharacterController2D script your FirePoint doesn't flip on the y-axis, click on your Local/Global button at the top of the editor. The FirePoint is flipping, but if you have one of those on and not the other, it will appear as if it's not. Regardless, as long as you've inserted the code as instructed, the bullet will come out of the FirePoint in the correct direction no matter if you have Local or Global selected.
Thx man, it was driving me crazy xD
Made my day. This comment should be pinned up.
Сябос из Украины, чел)))
Thank you so much
Saved me and my project. Thank you man!
Not gonna lie but he is better at speaking then my teachers, he inspires people to do stuff, he makes people positive by his smile dude, i just love watching him
Thanks man, really appreciate the kind words! :D
No man, thank you! Thank you for connecting with your viewers even tough you have 570,000 subscribers. It really shows that you're one of those rare youtubers who actually interact with their viewers which makes me feel happy and exited every time I watch your videos!
Yeah, exactly! I became a game developer because of him! Thank you for everything!
To be honest, he's definitely the person I'm gonna go to whenever I get started with unity. The videos seem so helpful
A different kind of helpful, like I'd actually learn from them
Gay
It might be a little late to mention, but if your effect can't dissapear after it finished playing, try these steps:
1. Go to the animation tab of your effect and add an event on frame n+1(3rd block on the right of 'Samples')
2. Create a destroy script and add it under your effect prefab
3. Go to the inspector of the animation event you just added, type 'Destroy' into the function column, no brackets
And that shall do the work. My script looks like below:
public class DestroyGameObject : MonoBehaviour
{
public void Destroy()
{
Destroy(gameObject);
}
}
I got this solution from chat-GPT and it worked like magic. Hope it helps :)
Got it working thanks!
never too late! thankuuu
after 20 + years of playing video games I finally understand how they are made :)
:D
:]
For those who cant get the Firing Point to flip with the sprite, copy lines 114-124 which can be seen seen at 2:47, this ties in with the lines at the bottom.
OMG thanks dude. I’ve been trying to fix it in my game but this totally helps. 👍
Interesting, I could not figure this out and somehow managed to get the bullets to switch direction when the player turns but the firepoint is still fixed. So basically it's still broken, I will look into your suggestion. Thank you!!
Thank you very much bro
Dude, I teach an intro to game design class and these 2D videos are the perfect start to the school year. Keep it going!
If u want that the bullet disappears after leaving the camera screen use:
public class Bullet : MonoBehaviour
{
public float speed = 20f;
public int damage = 20;
public Rigidbody2D rb;
public GameObject impactEffect;
// Start is called before the first frame update
void Start()
{
rb.velocity = transform.right * speed;
}
private void OnTriggerEnter2D(Collider2D hitInfo)
{
Enemy enemy = hitInfo.GetComponent();
if (enemy != null)
{
enemy.TakeDamage(damage);
}
Destroy(gameObject);
}
void OnBecameInvisible()
{
enabled = false;
Destroy(gameObject);
}
}
It's important for the level design i think.
Thank you
Very helpful tip man! Works perfectly!!!
Thank you!
Thankzzz Man
thanks g
Your tutorials are so easy to follow, and really fun. They are really positive, and user friendly too. You have helped me so much, as a beginner game dev. Thanks Asbjorn! :)
If anyone had an issue with the animation not disappearing after it's end, the solution is to add a script to the gameobject that is animated by it (in that case, impactEffect and destroyEffect) that has a function that destroys the gameobject. Than all you've gotta do is to add an extra frame to the animation and place an animation event that will trigger the destroy function
i have exactly that problem but i cant even solve it with your description :(
@@mrmiyagi5398 yeah I added an event and still cannot add a function to it.. it just doesn't come up in the options under functions.
@@shwk77 Hey, don't know if you were able to fix it or not, but here is what I did. Since we are instantiating a impact/hit effect prefab rather than changing the animation state, you need to attach a script to the hit/impact effect prefab and create a public function which the destroys the gameObject, this function would be called after the final frame of impact effects using the animation event.
Can u create the script and paste it as a comment it would really help
@@SDSFDSF631 What I did (a pretty dumb way) is created a script in the destroyEffect prefab in the Start frame like "Destroy(GameObject, 0.5f)" which makes it looks like that destroyEffect dissapeared right after it finished animation, but you can change the time to whatever you feel is right.
Can you make a tutorial about melee weapons
BTW
love you videos
he has one
LouisLemur he might have one now as this comment was made a year ago
For people using the Prefab approach, please do remember to utilize object pooling in order to maximize performance. I believe Brackeys has a video set up for this.
I legit cracked up when the cameraman shot Brackeys. Great video as always, man, thank you! How about a stealth themed video?
Alright if anyone is wondering how they can get their character to shoot while crouching here's how:
1. Make another firepoint for the crouching position
2. go into the weapon script and change it to this:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Weapon : MonoBehaviour
{
public Transform firePoint;
public GameObject bulletPrefab;
public Transform firePointcrouch;
// Update is called once per frame
private void Update()
{
if ((Input.GetButton("Crouch") == true && Input.GetButtonDown("Fire1")))
{
CrouchShot();
}
else if (Input.GetButtonDown("Fire1"))
{
Shoot();
}
void CrouchShot()
{
Instantiate(bulletPrefab, firePointcrouch.position, firePointcrouch.rotation);
}
void Shoot()
{
Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
}
}
}
3. back into unity, place the crouching firepoint into the new firepoint slot on the weapon component
That should make it so you can crouch and shoot.
Ty bro
actual legend
this is actually genius
or just move the firepoint with the animation of crouching
You SAVED me life. I've been trying for 2 hours to figure how to get the bullet to shoot across. (Using other tutorials)
This one nailed it step by step. Thanks!!!!
Hey Asbjorn, I am really happy that you returned to the coding part as u were just showcasing stuff earlier. WooHoo!!!
@CHUA RUI FENG Moe me too, because he's a legend
For anyone trying to get their bullet to shoot forward instead of right, use forward in place of right, or if that doesnt work, use up. You 2D game might be oriented so that forward to your camera view is actually the green axis, or up.
If you have a problem with the animation not disappearing after it's over, the solution is to add a script to the Object "DeathEffect" that has a function that destroys the gameobject after a bit of time (the time the animation takes).
This Code worked for me :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DeathEffect : MonoBehaviour
{
void Start()
{
Invoke("EndEffect", 0.5f);
}
void EndEffect()
{
Destroy(gameObject);
}
}
I love you so much : ) thank you
@@RhinoCringe Anytime 😊
It works!
It worked like a charm, thank you so much! :D
I know this is an old video so I don't know if you'll see this but this helped me so much. I was at a dead end with my game and it was really disheartening. I felt like I couldn't progress if I hadn't got this part sorted and even though it's not exactly the type of shooting I wanted, I was lucky to find this and I'm glad I switched it out to shooting just along the X axis. Thank you!!
I bought the masterclass; so far I´m loving it!
Idk if you still use this account but did it work? Also is it still up even?
I'm seven minutes in and you're already providing a lot of clarity to my shooting script. Other tutorials works but their rather overly complicated and don't explain much- you fix both issues. Very good job :D
hey Brackeys can you do a 2D tutorial on ledge grabbing and wall jumping?
While you wait, there are some cool tutorials about this subject already! :) Here's one: ruclips.net/video/EOSjfRuh7x4/видео.html. This stuff also really helped me a lot: juhakeranen.com/dev-mistakes-pdf/
I want AR tutorial..
that would be pretty cool.
ruclips.net/video/_UBpkdKlJzE/видео.html
Hes gone now sadly...
Tip to prevent lag (if you have large open areas or if it some how gets through a barrier)
You can make a script that delays the bullet after a while such as
Void start ()
{
Invoke(“despawn”, 20);
}
Public void despawn ()
{
Destroy(Gameobject);
}
OH NO... The udemy ads are spreading from before the videos to INSIDE the videos.
ABORT MISSION
my sentiment exactly... (((
Lol
Coding your own games is easier than you think...you know..you should take this online unity course on Udemy.
I'm already paying for a freaking game dev college I DONT WANT UDEMY STAAAHP
loooooooooool )) and while you're at it, check out that shader development course, too ))
huge thanks dude, my shooting just skyrocketed thanks to you
I just love your tutorials. Even If I don't really need that at this moment it's so useful and helpful for further struggles. Always find what I was looking for and even more. And you do always smile and make it all interesting. Just great job, thank you :D.
really loving these unity tutorials! it's always nice to see how to make a game from the perspective of an experienced game dev
Thank you so much, this helped me more than anything ive seen yet (not saying much since this is the second video ive watched but still Its good)
Thank you so much, I just started with Unity and wasn't sure how to create objects that kept the same components. Because of this video I learnt what a Prefab was, which solved my issue.
If anyone has a problem when shoot to right or left and bullet doesn't appear try to modify the position Z = 0 on the FirePoint, it's because bullet spawns out of the camera.
PD: Hope this solve your problem :)
Dude I love you
MAN I FUCKING LOVE YOUUUU
Yooooo finally, you some hella legend😭😭😭
You are a very good teacher. You know how to explain a complicated things in a simple way. I like this tutorial 😊. Keep making such tutorials.
Who else is just trying to be like Dani
Same...
But kinda THICK
X Gamer X Really THICCCCC
Me
But is it just me or is the gun locking kinda THICK
Is it me or is this comment lookin kinda THICK?
Glad to see both of the methods covered! :D I'm personally a RayCast-guy, because Vector performance lol
but I use ;
Ray ray = new Ray(transform.position , transform.left);
RaycastHit Block ;
if(Physics.Raycast(ray , out Block , 6f))
{
Enemy enemy= Block.transform.GetComponent();
if(enemy != null)
{
enemy.TakeDamage(10);
}
}
I just made a AR app in unity, I feel so accomplished in life!
Cool!!!!
Name of the app so we can spam 5 stars? :D
@@MaThMaTa1000 hey thanks man, but it's just a fun little project I made, it isnt on the app store.
Dj Khaled (andrew) suffering from success
Amazing, all your tutorials are dope, easy to understand and simply the best unity tutorials. Please provide us with more awesome tutorials like these. Looking forward. Much love😊
If ur enemy doesn't disappear if it's health goes under 0 health just delete the line "Instantiate(deathEffect, transform.position, Quaternion.identity);" in the enemy script.
Thank you man, saved my day!
Dude the way you approach your videos is so positive. You emit good vibes
Can you make a video on how to do 360 degree aiming on a 2D platform game like the one shown here? Making the character's arm and head rotate depending on where your mouse cursor is positioning.
This is the happiest man on youtube (Machalla)
Could you go over the controller script in an upcoming video? It would be really helpful to understand what's happening in it step-by-step so when we start our own projects we don't have to rely on other people's scripts
Im so glad I found this video :D super easy to understand, and exactly what I was looking for. Thank you!
Brackeys, your video is make me to learn about Unity. Please make 2D Melee Attack in Unity. Thank you.
Dude I absolutely love your videos, and this helped a lot. I would not be using unity if it was not for you! Keep making AWESOME content!!!!
Using colliders on the bulletsbis quite inefficient. It is much better to do a linecast from the bullet's last position to it's current one. This also means you can make bullets that can go through walls and find the out point.
This method also solves the problem of collision detection not resolving a hit when the bullet is moving too fast.
Could you elaborate please?
On your bullet script, you have a variable that keeps track of the last position it was in. Every frame you do a linecast from the last position, to the current position. If the bullet collided with something during that last frame of movement, the linecast will pass through what the bullet hit. This solves the collision system not resolving a hit, because no matter how far the bullet travels in that one frame, the linecast will still pass through whatever the bullet hit.
Regarding the wall part, if you want penetration, when you do the linecast, you can check if the linecast passed through a wall. If it did, you can use vector math to figure out where the bullet came out of the wall and at what angle.
@@Swirlstudios thanks dude! Any idea whether we can do this on gamemaker?
@cooldude 4172 I don't have any experience with that engine, but a quick google search brought up the collision_line method which may help you docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/collisions/collision_line.html
Awesome video's! Newbie to Unity really appreciate your thorough explanations.
"Let's not jump the gun on this one" - Dad Joke level 100
Quick tip:
Add a float: impactEffectTime
This is the time the impact effect animation plays, roughly. The effect should end on an invisible frame, so it doesn't show, but if you look at the inspector, the prefab is still there. After a few thousand shots, this could slow down your game. With a timer of, say, half to one second, you could destroy the effect prefab as well. By having this as a variable, you can use much longer effects, in case you have special weapons with much longer effects in the future. Like a rocket with secondary explosions.
This will then clean up the effect prefabs for you and you shouldn't have more than maybe 10 effect prefabs at any given time, and no significant impact on performance.
To implement, just copy the Destroy command from the bullet itself, place right before the bullet, change the variable name from the bullet game object to the effect game object and add the timer as a second parameter. It looks like it would destroy the effect prefab first, but the second parameter is actually a timer, so the bullet would be destroyed instantly, and the effect would be destroyed impactEffectTime seconds later.
Has anyone else had an issue where your impactEffect prefab plays through it's animation and then doesn't go away?
make sure the animation isn't looping
I have the same problem. The animation will play and then stop, but the impact is sticking to the wall. The animation loop is off.
I had the same problem, i downloaded an empty png then add it to end of the impact animation and enemy death animation it fixed mine but im sure there is much better solution
Mee too. Has anyone solved it?
You need to put an empty frame at the end of the animation. I also had to create a destroy object script for it to delete it from the hierarchy.
thanks, I have been struggling to make my player fire but this tutorial helped me a lot
Brackeys. I know this request might be pointless, but could you please, I beg you, make tutorial with shader graph related to rain ripples and rainy window drops and if you find time, character that looks like a ghost, but shaped like character :)
You could make a ghost by making a character transparent, ramping up its emission + using an bloom aftereffect to blur the edges
I want the ghost that looks like in call of duty black ops 4
ruclips.net/video/h_fKrz85o8I/видео.html
10:46 skip
Too bad I just found out about this pretty epic channel now. But I'm very glad that he made it, thanks for the epic tutorials
Hi, If someone could help me, I am doing the prefab method but whenever I shoot the bullet just stops in front of the enemy and doesn't destroy or print Enemy(or "Frog" in my case) in the console.
I DON'T HAVE A SOLUTION BUT IM BOOSTING THE COMMENT SO MORE PEOPLE CAN SEE IT AND MAYBE ONE OF THEM CAN HELP YOU
do you have isTrigger enabled under your bullet's box collider ?
Same and if I turn on isTrigger it just phases through
Nevermind: Solution: I wrote OntriggerEnter2D instead of OnTriggerEnter2D
Brackeys is back at it again with the amazing 2d tutorials
Can you do a tutorial on making particle clouds pls. I need help for making one in my game. I don’t want to use a skybox by the way.
im a big fan of your videos. i've seen all your videos so far! and learned almost EVERYTHING of unity with you.
Can you make a tutorial for a turn based combat like final fantasy or any rpg turn based?
13:17 for the raycast based shooting.
19:50 if you want to wait for exactly 1 frame, then imo it's more accurate to use
yield return Time.deltaTime
because that's the length of the last frame. of course it's not 100% accurate because of varying frame lengths but it should be closer than 0.02 seconds
Really an amazing tutorial! Love from Pakistan
Sir, this, like all of your other tutorials are INCREDIBLE and AWESOME! Thank you for sharing your genius with the rest of us. I think it would be awesome to see a tutorial on how to create a map for 2D games like we see in Metroidvania games like Metroid, Symphony of the Night, Shadow Complex, etc. (tutorials on this subject on the internet are lacking as a whole). Thanks! :)
Man, I can’t sleep without hearing your voice lol, so soothing and professional
thank GOD u corrected that character controller part, i used that 2d movement script and couldnt for the life of me figure out why my player was acting drunk af
Thanks bro. Just one request from me - you can leave it if you don't find it worth teaching.
Can you make video on a game where we hit the api to send data to server and then again hit the get api to receive the data back from server... It could be a series of tutorials where first we login through social media and save our email and pswd to server and then save the details of user like coins,win%,powerups,loose% etc.
What do you think ?
Thumbs Up.
thanks again. this stuffs already hard to learn. without your channel id really be lost whenever I get in front of the computer.
" And I will see you in the next video! "
Okay let's just scroll down and see the next on-
" *SCREAMS INTO MIC* : *AHGHGHGAHFHAGHGAHGA* "
Man love your tutorials ever since I'm learning from ya I want to add a Easter egg of you in one of my games because you deserve one!!
@Brackeys
Please, do a 2D tutorial on how to make melee atacks and combos.
I'd really like to try to make a 2D Devil May Cry
Gui G Dias yeah thats a good idea
In your animations, attach a collider trigger and animate it to follow the weapon, then apply damage with that collider similar to how the bullet detects impacting an enemy
that's a good start but how should i go about balancing the weight of my enemies and forces of each attack to allow for things like juggle combos, launchers, wall bounce, these kinds of things?
Hey I saw your comment on making a 2d devil may cry i'm interested in helping if you want some help?
@@guigondi7671 well you could make it that when you perform a launching attack it moves the enemy up a certain distance, and that when you when you attack an enemy they enter a stagger animation that keeps them from attacking. Each hit could move the enemy up a certain distance to keep them in the air, or each hit could freeze them in place for a split second so you can continue your combo. Then make the last hit of your combo a finisher that launches the enemy far away so that you can't do zero to death combos. Understanding basic physics equations like the kinematic equations, and work will help you precisely control the physics of the combo system to make it feel the way you want.
BEST shooting tutorial for 2D out there, thank you!
I got a question tho and I really hope you'll answer, how did you turn the impact animation into a useable prefab? I'm banging my head over this and it should'nt be so hard haha
3 ways to do it...
Using ray-cast but spawning a prefab to follow from birth to end of ray cast!
Making it more realistic and good!
And you can easily adjust speed of following or reduce or what ever lol!
Its very effective, stable and great way to make a battlefield 4 like shooter! (Realistic) the key between the two lol
I was really hoping he would show this method, thank you for confirming it's existence!
Danian D. No problemo!
But i havent tested it yet, i see no reason this wiuldnt work, infact the first point he said which was the one i used in my 2d game and believe me... that was messy lol...specially with my inability to understand a good approach to coding!
But his method i believe is closer to the perfection that is real life physics!
Lol, that’s just the same as using a prefab.
The only difference is the mode of travel for the prefab.
Real life physics also have bullet drop, so that method alone wouldn’t make anything more realistic.
I think he meant more stable because the hit calculation doesn't rely on an actual prefab flying towards the target. Knowing some of the weird glitches with physics in game engines, raycast seems like the safer alternative. Also let's you do whatever you want with the now-only visual bullet prefab.
Danian D. Yes, also you can tell your ray-cast to fall towards gravity over distance with some coding ways...
Making it stable AND realistic.
To people who have trouble with gunpoint flipping issue(Gun point changing direction) you can use this
Have 2 Variables
private bool isFacingRight = true;
private bool isFacingLeft = false;
Then the rest of the logic is below
Also this is a script if you designed your player facing right
if (movementX > 0)
{
anim.SetBool(WALK_ANIMATION, true);
anim.SetBool(JUMP_ANIMATION, false);
if (isFacingRight == true)
{
transform.Rotate(0f, 0f, 0f);
isFacingRight = true;
isFacingLeft = false;
}
else
{
transform.Rotate(0f, 180f, 0f);
isFacingRight = true;
isFacingLeft = false;
}
}
else if (movementX < 0)//we are going to the left
{
anim.SetBool(WALK_ANIMATION, true);
anim.SetBool(JUMP_ANIMATION, false);
if (isFacingLeft == true)
{
transform.Rotate(0f, 0f, 0f);
isFacingLeft = true;
isFacingRight = false;
}
else
{
transform.Rotate(0f, 180f, 0f);
isFacingLeft = true;
isFacingRight = false;
}
}
Note: The anim.SetBool stuff are my animation code you can ignore that but the logic should work
Hope it helps anyone :D
I have a really big problem! After I create OnTriggerEnter2D, when I play the game my bullet just shows up in front of me for a split second then disappears. I would imagine this happens because the bullet doesn't know what is an enemy or not. Can someone please tell me how I can fix this problem?
Same problem here! Someone help usssss
Omg I'm having this exact issue and it's making me crazy. I can get it to injure the enemy but that's it.
disable gravity of the bullet from rigidbody and mark body type as kinematic
Same problem
same
Found a better solution for what Brackeys talks about at 3:00
private void Flip()
{
// Switch the way the player is labelled as facing.
m_FacingRight = !m_FacingRight;
if (m_FacingRight)
{
transform.localRotation = Quaternion.Euler(0, 0, 0);
}
else
{
transform.localRotation = Quaternion.Euler(0, 180, 0);
}
}
Quaternion.Euler rotations are better for when you want to control the aim with your mouse, his way works fine for what he's doing but I think this is better for other projects.
i ran into an issue where my bullet wasnt moving at all, i had to re-assign the rigidbody in the inspector, in case this helps anyone
I ran into the same bug, but it didn't work. What do you mean by re-assign
Zachary Lamar so if you click on it in the inspector, then drag it into the slot where it is on the script
Haha the look on your face when the handgun showed up. Amazing. 😂
Haha
Don't forget to destroy the impacts effects after a few seconds because of performance issues
How do you do that?
@@thewiitard5515 Destroy (gameObject, lifetime);
@@DayMoniakkEdits It says that lifetime is an error
The Wiitard lol don't write "lifetime", put the amount of time in seconds, for example "3f" to destroy the bullet after 3 secs :)
@@DayMoniakkEdits my problem is that the animation doesn't delete when its done it just stays at the last frame of animation
Thank you for this. You have been a great help for all of my projects.
10:54 “Well then we want to die”
Excuse me?
For a beginner like me the salto jump at 2:08 was just a huge flex
I have run into a problem, for both the enemy and the projectile the last frame of the deathEffect/impactEffect lingers on screen permanently. Can some one help please?
same here!, did you find a solution?
@@bomber_g in the video the effect never "dies" he just added an extra animation frame where it goes invisible, but they are still there.
@ozmega do you know how to add empty keyframes? I can't seem to make it happen
Love the fact this amazing man has a Mickey shirt on
Why is RUclips showing me this exactly after he left ?
For people who want the shots to not affect the player, here is a fix:
in the bullet rigidbody, press layer overrides, then add a new layer called player to the excludes. add the player to this layer, and the bullet will ignore it.
How do you make it wait time before next fire???(very important)
Try using this
public class Gun : MonoBehaviour
{
public Transform firePoint;
public GameObject bulletPrefab;
public float Cooldown1 = 0f;
// Update is called once per frame
void Update()
{
Cooldown1 -= Time.deltaTime;
if (Input.GetButtonDown("Fire1"))
{
if (Cooldown1
I like how you did it with different assets, coz then if we wish to essentially follow, we have to redo everything with the new asset. And so it helps us Rerember and stuff. Pretty meet idea.
The comments be like: "you can do this and this to increase the FPS by this"
Me: "... Why are you even watching this then?"
maybe they have some basic coding knowledge
or they enjoy watching his vids idk
Great tutorial, but one personal problem I'm having is that my bullets like to be invisible. Now I understand their new to the world, but I kind of don't like it when their invisible...
Check the bullet prefabs Sorting Layer / Order in layer, it's probably layered behind stuff.
It's either too low on the sorting layers or your FirePoint is too close to your Player
Wow I am actually currently following a course by Panjuta so I was really surprised to see him as a sponsor here.
I really hope to see "shooting as particle system" guide in some future, cause alot of prefabs hit ur frame rate pretty hard
Miss good old days when you used to create Intermediate to advanced series of videos. Now you have gone back to lesson 1
Hello Guys if u have the same struggle like that the animation dont want to dissapear create the effects new and add a script in that script u will put in
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Destroy : MonoBehaviour
{
void Update()
{
Destroy(gameObject,0.5f);
}
}
and then i will dissapear quickly :) hope i had can help anyone :)
Thank you very much!! You helped me a lot!
Please , aiming tutorial next :) have been flipping my head over this for weeks
Hi! Can someone help me? I've been trying to add an animation when my character is shooting but I can't find a way to make it work... Either the character stays stuck at the end of the animation or the animation straight up doesn't play ;^; I've tried animation events and pretty much everything else...
for the "the character stays stuck at the end of the animation " problem, destroy the character animation when it's done and instantiate the origional object
Im such a noob at unity yet you made this very clear! Good job you get a sub
7:19 just my bookmark
heres a quick tip if you're using the prefab method to save you lots of performance copy and paste these lines of code
private float time = 1;
private GameObject instantiatedObj;
delete the whole instantiate bulletPrefab line and replace it with this
instantiatedObj = (GameObject)Instantiate(bulletPrefab, transform.position, transform.rotation);
Destroy(instantiatedObj, time);
You canno't destroy a prefab to save loss so this creates a clone you're welcome :) this also works with everything
0:49 the second guy has aimbot !
lmao
maybe brackeys is into hacking :O
If you get the message
* Input Error:“Fire1” button is unknown *
In the Unity Console. Change
Input.GetKeyDown("Fire1")
to:
Input.GetButtonDown("Fire1")
You are God and Win, Brackeys.
Wish you'd update your Unity catalog, as the Unity Input Action Manager is *way* better. However, I understand your reasons.
12:11 "Super coal" XD
Now i know to use prefab for 2D game and raycast for 3D game so knowledge unlocked.
can you do me a favor? can you tell me more about deathEffect? what the heck is that? how to make it?
It is probably a particle effect he has in his assets folder.
@@lorcangarvin8723 Or an animation?
@@iwant2tryhard337 Yeah you could just make a sprite with that explode animation, make it play wants it enters the scene (and if you want to make it so that it deletes itself once it's done to save on space) and then juts turn it into a prefab.
@@lorcangarvin8723 how do you make it delete itself