I hope you will enjoy the videos guys! I will have a tutorial on Weapon Switching coming up this sunday. Oh and sorry about the over exposed footage ;) I hope some of you will participate in Ludum Dare this weekend - I sure will and plan to make a video about it as always :D Good luck and remember to have fun!
Can you do some more advanced tutorials for Unity. I would love to see some prototype versions of mainstream games (e.g. Hearthstone, not No Man's Sky, etc.).
The problems always come from not following the tutorial from start to finish - you will always miss one variable somewhere. :) I was putting this into my own script and missed the damage and range variables, and then spent 5 minutes going back through the video for it. :(
I like how he manages to keep the content easy for newbies to understand while moving at a breakneck speed and not wasting one second of the viewers' time. That's talent right there.
I feel like I'm getting a full college level education from your UA-cam channel but without any of the student debt. Thank you sir for the amazing content you provide for Unity!
Anybody having the same problem of" 'Target'Does not contain a definitionfor'TakeDamage' and no accessible extension method'TakeDamage'accepting a first argument of type 'Target' could be found" please heelp🥲
Brackeys team, I just want to say thank you for putting together all of these tutorials. They are laid out and presented well, allowing for even a novice like me to follow! Well done and I look forward to watching more in the future!
YOU ARE THE BEST I LOVE YOUR CHANNEL THANK YOU! I would have never gotten into Unity dev without you. You have been so helpful. You turned something so complicated and made it super simple. Instead of making it look easy, you make it easy. THANK YOU.
I watched this even though it's completely irrelevant to the needs of my own Unity project (I'm making a 3D platformer) because simply put... your tutorials are so interesting and thorough and insanely professional in presentation that I can't help but watch, and I still think I ended up learning somethings that I'm sure will be useful down the road. I'm gonna be digging through the rest of your videos as I can! Keep up the amazing work!
That was an awesome description of the raycast hit, was able to implement the same thing to a character kicking objects, learned the transform.name and the rayccast in one video and many more things, you're awesome Brackeys!
I really love your channel. It helped me a lot in programming in Unity, so thank you for what you do! I would like to see a video/mini series on how to make a simple inventory system with an inventory/bag UI, different item classes that do different things when left/right clicked while held in your hand and so on. Think minecraft/harvest moon. How to make sure your character doesn't try to drink your axe or shoot with your potion. How to "make" different item classes with different properties in an outside source like a json file (a potion doesn't need a fire rate, or does it, is fire rate the same as drinking cooldown, a crossbow doesn't need a property of how much it heals you) and how to import them into the game as an items list. common pitfalls and things where people get stuck when creating an inventory/item system.
Loving the tutorials brotha, Only been game making for about a month. And your videos seem to be to only ones i watch, and dont end up with a headache and a bunch of errors lol. Keep it up
I would recommend adding the line "ImpactGO.transform.parent = hit.transform;" after instantiating your impacteffect because if you're working with bulletholes too this way the bulletholes will move with the object they're on instead of just staying there.
I know that this is for beginners, so maybe in another tutorial you should talk about how its better to pool objects that would other wise be created a lot so that its more efficient.
Brackeys: so now when we go back to unity we shouldn't see any error Unity: We don't do that here Even better: Brackeys: so now when we go back to unity we shouldn't see any error Unity: *HIPPITY HOPPITY ERRORS ARE NOW YOUR PROPERTY*
since I saw everyone had +1000 errors here you have boys enjoy: -Gun.cs: using System; using System.Diagnostics; using UnityEngine; public class Gun : MonoBehaviour{ public float damage = 10f; public float range = 100f; public float fireRate = 15f; public float impactForce = 30f; public Camera fpscamera; public ParticleSystem muzzleflash; public GameObject impactEffect; private float nextTimeToFire = 0f; // Update is called once per frame void Update () {
if (Input.GetButton("Fire1") && Time.time >= nextTimeToFire) { nextTimeToFire = Time.time + 1f / fireRate; Shoot(); } } void Shoot () { muzzleflash.Play(); RaycastHit hit; if (Physics.Raycast(fpscamera.transform.position, fpscamera.transform.forward, out hit, range)) { UnityEngine.Debug.Log(hit.transform.name); Target target = hit.transform.GetComponent(); if (target != null) { target.TakeDamage(damage); } if (hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal)); Destroy(impactGO, 2f); } } } ---------------------------diferent script-------------------------------- target.cs: using UnityEngine; public class Target : MonoBehaviour { // Start is called before the first frame update public float health = 50f; public void TakeDamage (float amount) { health -= amount; if (health
hi i tried it and it still doesnt work, it said: the type or namespace name Target could not be found (are you missing a using direcetive or an assembly reference) please help
@@drokos8239 Just to make sure these are the 2 scripts are you sure you didnt copy the part where I enter target.cs if you didn't could you give me the exact error
i replayed this vid 6 times just to i can help funding , but they're arent any ads, means this tutorial is really earning nothing but it taught me a lot... i love you host
@@urielcobo-cuisana2316 i agree , we all miss him. he was the best teacher ive seen so far.. do you know someone else like him that makes similar content for "unreal engine" ? cause im really looking for one
Me: deletes start method, visual studio: 12467147628794 errors. Brackeys: deletes start method, visual studio: 0 errors or warnings. me: ok i dont get it
Im having this error " 'Target'Does not contain a definitionfor'TakeDamage' and no accessible extension method'TakeDamage'accepting a first argument of type 'Target' could be found" please heelp🥲
If anyone wants the raycast to shoot out of a specific point of the gun (like the muzzle) instead of out of the center of the screen, do this: -First, go into the fire script -change the "public Camera fpsCam" variable to a "public Transform muzzle" variable (you can name the Transform whatever you want, I chose "muzzle") -Then in the "Void Shoot" function change the "fpsCam.transform.position" to "muzzle.transform.position" and the "fpsCam.transform.forward" to "muzzle.transform.forward" -Now in the inspector drag and drop the muzzle of the gun into the "Muzzle" component. -If your gun does not have a muzzle, create an empty object that is the child of the weapon, name it "Muzzle", and position it on the tip of your gun. Hope this helps, it worked for me.
Hey, I used your code, its not dectecting the ray when I click. This is my code (I change it slightly) using UnityEngine; public class gun : MonoBehaviour { public float damage = 10f; public float range = 100f; public Transform muzzle; // Update is called once per frame void Update() { if(Input.GetKeyDown(KeyCode.Mouse0)) { Shoot(); } } void Shoot () { RaycastHit hit; if (Physics.Raycast(muzzle.transform.position, muzzle.transform.forward, out hit, range )) { Debug.Log(hit.transform.name); } } }
Funny enough I've been taking that Udemy course starting this year. And supplemented with Brackeys it has been a lot of help. Glad I got the course before seeing the adds or else I would have been like fuck that
I learned SO much from this one tutorial, - I learned raycasts - I learned more variables - I learned how to acces scripts from scripts (lol) - I learned how to make a crosshair and WAY more, ty for the tutorial!
Anyone having issues with the muzzle flash: Follow Brackeys settings, but when I learned the BIG thing stopping me from succeeded, I realized I didn't have to, because it changes AS YOU PLAY. Follow exactly what he does, then parent gun model to camera(as in the start) then the particle system to the gun AND use it as the target as in 9:02. After this, it's not shooting right? Well with the particle system parented in this path(camera-gun-particle system) go to the system and now reset the transform(like you do when you add the ground check empty to to character). NOW try and it should work and any setting you change should be as you play!
If anybody is having trouble figuring out why their hit effect particles wont work(probably because you havent imported the effects system and just duplicated the muzzle flash and turned it into a hit effect basically), because you duplicated it, when you shoot it makes a new object right, so when its made its being awakened essentially, and because you duplicated the muzzle flash which had play on awake disabled, it wont display a hit effect. turn that bad boy on and you will have a hit effect when you shoot something. hope this helped anyone that struggled like i did
Weapon Recoil isn't really hard. I figured out myself. Here a little demonstration: First, you need a Recoil Vector: Vector3 Recoil; //private or public doesn't Matter And a max recoil amount: public float RecoilAmmount = 0.2f; //private or public doesn't Matter again, but I would make it public for ease of use Now before you cast your Ray we need to get a random Vector to change the direction the ray is firing. For that we can use Random.InsideUnitCircle which should give us a random point on a circle. Vector2 recoil = Random.InsideUniCircle()*RecoilAmount; When you now Fire your ray add the Recoil to the FPSCam.transform.forward so if (Physics.Raycast(FPSCam.transform.position, FPSCam.transform.forward + Recoil, out RayHit)) Hoped this helped you and other People. NOTE: I'm still a beginner. This should work, but I don't know if it is the most efficient way of doing it. I will make changes to this comment if someone has a better way.
If you use the impact effect, which creates the static mark on the object being hit and you don't want it to be destroyed, instead of using Destroy(impactGO, 2f), you can use ImpactGO.transform.parent = hit.transform to maintain the mark location on objects.
Anybody having the same problem of" 'Target'Does not contain a definitionfor'TakeDamage' and no accessible extension method'TakeDamage'accepting a first argument of type 'Target' could be found" please heelp🥲
Thank you for helping me make a game I had no clue on what to do and after watch like 5-6 videos I’m starting to get it just wanted to thank you for everything
Thank You So Much, I tried a few times and it didnt work but i finally got it working and am very happy with it and building off of it Thany You SOOOO SOOOO SOOOO MUC You do not understand how much this helped THANK YOU
if you want to sprint here is some code you can add: in "void Update" add: if (Input.GetKey(KeyCode.LeftShift)) { speed = runSpeed; } else { speed = 6; } and add a public float called run speed with something similar to: public float runSpeed = 10f; and boom! you now have a simple running system in your game that can easily be changed.
DId you get the error of The type or namespace "Target" could not be found. Are you missing a using directive or assembly reference?" I'm stuck with this problem. I feel like Brackeys lied a lot on his tutorials :(
using UnityEngine; public class gun : MonoBehaviour { public float damage = 10f; public float range = 100f; public Camera fpsCam; // Update is called once per frame void Update () { if (Input,GetButtonDown("Fire")) { Shoot(); } } void Shoot () { RaycastHit hit; if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range)) { Debug.Log(hit.transform.name); } } }
for those who just want the code using UnityEngine; public class gunscript : MonoBehaviour { public float damage = 10f; public float range = 100f; public float fireRate = 15f; public Camera fpsCam; public ParticleSystem muzzleFlash; private object hit; public GameObject impactEffect; public float impactForce = 30f; private float nextTimeToFire = 0f; // Update is called once per frame void Update() { if (Input.GetButton("Fire1") && Time.time >= nextTimeToFire) { nextTimeToFire = Time.time + 1f / fireRate; shoot(); } } void shoot() { muzzleFlash.Play(); RaycastHit hit; if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range)) { Debug.Log(hit.transform.name); target target = hit.transform.GetComponent(); if (target != null) { target.TakeDamage(damage); } if(hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } } GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal)); Destroy(impactGO, 2f); } }
Muzzle Flash Issue Solution: The solution that I found was turning the fire rate to 10 or below, for some reason when its higher the muzzle flash doesn't show up. (Also make sure to do this in Unity and not in the code as "fireRate" is a public variable). Hope this helps.
For anone having issues with muzle flash and imapact effect i have found this asset which might be useful assetstore.unity.com/packages/vfx/particles/war-fx-5669
If anyone is having the issue that I lost my mind over with the particles spawning randomly. Go to Auto Random Seed under the particle system and disable it. Then go over to the shape part and change it from a cone to a sphere and make the radius and radius thickness of the sphere something very small (like 0.0001). Hope this helps
I Just came from the fps movement tutorial. Following along I made the gun a child of the main camera. but when I look up or down the gun has some weird stretching. How do I fix this??
@@sami_Sahraoi well i did just create new script and used one script from danis tutorial ua-cam.com/video/XAC8U9-dTZU/v-deo.html&ab_channel=DanisTutorials and than i aded a gon with a script and it worked :)
If your mazle flash does not work then you need to rewrite the script. void Update () { if (Input.GetButtonDown ("Fire1")) { mazzleFlash.Play (); Shoot (); } }
Great videos , glad I found this channel. I really do appreciate people taking the time to make content like this, regardless of motivation. Tip for some people who may not be completely new to programming but are new to Unity and the way things are done, may help you to watch at like .75 - .85 speed. This might keep your head from exploding while trying to follow him around the Unity interface lol
@@unvisibleone5367 Not sure what your code looks like but.. Sounds like maybe you have something reversed. Stating that it is read only sounds like maybe your mean to put something like myvariable *= time.deltatime. but instead have something like... time.deltatime *= myvariable. The first one will make myvariable some value multiplied by delta time. where as the second one tries to change deltatime which can not be done. With out seeing your code , thats the best guess I can give you. If you havent solved it yet, I'd be happy to help a little more but would have to see some code.
@@alpacino6859 I was getting the same problem. What I did was kept moving the particle emitter up until the particles were by the gun. Hope this helps! :)
You would have to rig and animate the gun 3d models in a program like blender instead of unity. You can look up rigging or animating a gun in blender, and i'm sure you'll get many results.
He can actually animate it in unity ,but the weapon shot be separate and he could then animate it in unity ,but also i prefer using other 3D software like Blender or Maya because they have much more features and tools for animation.
@@billythebuilder8724 yeah it was mainly for the raycasting code but it worked pretty well, got rid of the health and killing stuff and instead of instantiating a particle system it instantiates seeds which grow i abandoned this project tho
Hmmmm for the target script im getting a error Assets/Gun.cs(24,13): error CS0246: The type or namespace name 'Target' could not be found (are you missing a using directive or an assembly reference?)
@robinadi7888 @janpaweii3115 If you don't create the script (or class) called 'Target', you would get the error. So make sure to create the 'Target' class or script.
I hope you will enjoy the videos guys! I will have a tutorial on Weapon Switching coming up this sunday. Oh and sorry about the over exposed footage ;)
I hope some of you will participate in Ludum Dare this weekend - I sure will and plan to make a video about it as always :D Good luck and remember to have fun!
Im looking forward to it
Can you do some more advanced tutorials for Unity. I would love to see some prototype versions of mainstream games (e.g. Hearthstone, not No Man's Sky, etc.).
I can't set up the arenas materials and textures ;(
the arena doesnt come up when i drag it in
i also just fall throught the arena
"Void die" is a powerful expression
*void
Poor Void
I'm going to void to get back to base
void*
:(
he almost covered all the main aspect of FPS games in just 13 mins without any delay. amazing 10/10. This video is so much detailed .
Well he used a premade FPS script.
@@BlazertronGames He used his premade fps pack.
He even discussed the nature of life's meaning as well! Did you catch it?
Engrish?
Bruh your gun shoots high... does anyone have a answer to this??? I know i did it correct but its not shooting on the cross hair
everybody gangsta till the cyllinder gets a gun
no *B E A N* capsule
@Jakey K *karlson vibe plays in the background*
no, B E A N would get a gun
dun din dan dundundundun dun din dao ding dundundundun
Do you mean the AT-48
"so now when we go back to unity we shouldn't see any error"
My console: 1037 errors
The problems always come from not following the tutorial from start to finish - you will always miss one variable somewhere. :) I was putting this into my own script and missed the damage and range variables, and then spent 5 minutes going back through the video for it. :(
That's the daily life of developers. : )
@@DavidB-rx3km or following outdated tutorials, but i don't think that's the case.
lolololololololol
oh
this is the best channel for unity users
agrreedddd
don't forget Jimmy Vegas , he has a good channel too
he is an incredibly good teacher.
*CODING YOUR OWN GAMES IS EASIER THAN YOU THINK*
I would like but its at 420
Ah, a medieval arena, a wooden crate, and someone with a FUTURISTIC LASER BLASTER
lol
lol
Realistik 100
@Sourav Parik oh yeah, time travel makes sense.
I think we should appreciate that he is teaching us with some cool assets that are for free , it is a good joke tho
I like how he manages to keep the content easy for newbies to understand while moving at a breakneck speed and not wasting one second of the viewers' time. That's talent right there.
Me: its correct
Visual Studio: its correct
Unity: you cant enter play mode with compiler errors.
You need to attach VS code with Unity
Then it will start calculating all your errors,tnx
sooooooooooooooooooooooooooooooooooooooooooooooooo true XD
2020 unity is the worst unity, it will ever be
@@dynacycle never be whay
I feel like I'm getting a full college level education from your UA-cam channel but without any of the student debt. Thank you sir for the amazing content you provide for Unity!
Me
Heyyy plz help
Anybody having the same problem of" 'Target'Does not contain a definitionfor'TakeDamage' and no accessible extension method'TakeDamage'accepting a first argument of type 'Target' could be found" please heelp🥲
@@ahmedmohamed-cd7xf save all of your .cs files, if you dont save all of them target doesnt become public
Brackeys team, I just want to say thank you for putting together all of these tutorials. They are laid out and presented well, allowing for even a novice like me to follow! Well done and I look forward to watching more in the future!
Brackeyes: void die
void: pls no
YOU ARE THE BEST I LOVE YOUR CHANNEL THANK YOU! I would have never gotten into Unity dev without you. You have been so helpful. You turned something so complicated and made it super simple. Instead of making it look easy, you make it easy. THANK YOU.
So quick. .yet very detailed. Learnt a few new things. Thanks.
Going by these alone, just some few things and you have the basic controls for an fps. Now just need levels, models, sound and ai
The quality of these videos are amazing, keep up the good work! 💪
literally. It is default 1080p HD
@@coolboidoesstuff9828 time to be wooshed away
@@coolboidoesstuff9828 so your telling me that FHD is normal
dude im waching this vid in 480?
@@coolboidoesstuff9828 r/whooooooooosh after 4 years get rekt
Me: *Makes Everything Correctly.*
Unity: *999+ Errors.*
You are 2 years late
@@nerdly5759 ah shit...
;-)
@@nerdly5759 so this doesn't work anymore??
It works
I watched this even though it's completely irrelevant to the needs of my own Unity project (I'm making a 3D platformer) because simply put... your tutorials are so interesting and thorough and insanely professional in presentation that I can't help but watch, and I still think I ended up learning somethings that I'm sure will be useful down the road.
I'm gonna be digging through the rest of your videos as I can! Keep up the amazing work!
Procrastination via NOT procrastination. Stop it, Cyreides... you're scaring the kids...
The Diamond Gamer ?
It's sad that this channel is "gone"
Man.... it actually hurts
People ask me why you are depressed
Me: No one will understand how sad i was when brackey left the youtube
We dont talk about that here
:(
Heyy plz help
*_Me while watching this:_* Wow,,that's so easy.
*_Me after coding:_* error;error;error;error
Yes the pain
@@Hakosin-i3z Hello there
@@astickman2486 General Ken Obi
@@Hakosin-i3z Ahh, nice
@@pythro_ General Pytro
That was an awesome description of the raycast hit, was able to implement the same thing to a character kicking objects, learned the transform.name and the rayccast in one video and many more things, you're awesome Brackeys!
The legend never dies...
Uh
I really love your channel. It helped me a lot in programming in Unity, so thank you for what you do! I would like to see a video/mini series on how to make a simple inventory system with an inventory/bag UI, different item classes that do different things when left/right clicked while held in your hand and so on. Think minecraft/harvest moon. How to make sure your character doesn't try to drink your axe or shoot with your potion. How to "make" different item classes with different properties in an outside source like a json file (a potion doesn't need a fire rate, or does it, is fire rate the same as drinking cooldown, a crossbow doesn't need a property of how much it heals you)
and how to import them into the game as an items list. common pitfalls and things where people get stuck when creating an inventory/item system.
woah
Loving the tutorials brotha, Only been game making for about a month. And your videos seem to be to only ones i watch, and dont end up with a headache and a bunch of errors lol. Keep it up
I would recommend adding the line "ImpactGO.transform.parent = hit.transform;" after instantiating your impacteffect because if you're working with bulletholes too this way the bulletholes will move with the object they're on instead of just staying there.
needed this to use the effect for different types of effects. Thank you
I know that this is for beginners, so maybe in another tutorial you should talk about how its better to pool objects that would other wise be created a lot so that its more efficient.
That's a really good idea! Noted :)
Also, to use RaycastNonAlloc so that you're not generating garbage every shot that the GC has to take care of.
Mr Anderson Noice idea! ;)
I would LOVE to see you do an object pooling tutorial so a newbie like me can understand it!
The function "Die" should be inside the class "TakeDamage".
Brackeys: so now when we go back to unity we shouldn't see any error
Unity: We don't do that here
Even better:
Brackeys: so now when we go back to unity we shouldn't see any error
Unity: *HIPPITY HOPPITY ERRORS ARE NOW YOUR PROPERTY*
ikr
Is it me,or is your comment looking kinda T H I C C ?
@@xegrand7548 im a dani subscriber too!
@@suryanshjadhav9226 lol Karlson is off to become the most anticipated game of 2068
@@xegrand7548 so we wait 47 years...
I thought 84
So when karlson releases when the entire fanbase i old ill tell my grandkids to buy it lol
Pullin up 7 years later to say this still works in Unity 2023. Simple, clean, and timeless solution. Brackeys is tha GOAT!
Did you manage to get the flare particle system? It’s not there for me.
@@CreaturesCanada It's in the standard assets which you have to download then import via the package manager. It's still there.
Brackey: just create a particle that you like
My Brain: Error 404
i had to look up another tutorial
since I saw everyone had +1000 errors
here you have boys enjoy:
-Gun.cs:
using System;
using System.Diagnostics;
using UnityEngine;
public class Gun : MonoBehaviour{
public float damage = 10f;
public float range = 100f;
public float fireRate = 15f;
public float impactForce = 30f;
public Camera fpscamera;
public ParticleSystem muzzleflash;
public GameObject impactEffect;
private float nextTimeToFire = 0f;
// Update is called once per frame
void Update ()
{
if (Input.GetButton("Fire1") && Time.time >= nextTimeToFire)
{
nextTimeToFire = Time.time + 1f / fireRate;
Shoot();
}
}
void Shoot ()
{
muzzleflash.Play();
RaycastHit hit;
if (Physics.Raycast(fpscamera.transform.position, fpscamera.transform.forward, out hit, range))
{
UnityEngine.Debug.Log(hit.transform.name);
Target target = hit.transform.GetComponent();
if (target != null)
{
target.TakeDamage(damage);
}
if (hit.rigidbody != null)
{
hit.rigidbody.AddForce(-hit.normal * impactForce);
}
GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
Destroy(impactGO, 2f);
}
}
}
---------------------------diferent script--------------------------------
target.cs:
using UnityEngine;
public class Target : MonoBehaviour
{
// Start is called before the first frame update
public float health = 50f;
public void TakeDamage (float amount)
{
health -= amount;
if (health
hi i tried it and it still doesnt work, it said: the type or namespace name Target could not be found (are you missing a using direcetive or an assembly reference) please help
@@drokos8239 Just to make sure these are the 2 scripts are you sure you didnt copy the part where I enter target.cs if you didn't could you give me the exact error
in Gun.cs " Target " is showing up as an error, saying it could not be found
@@cianj8798 you need to do the target.cs code for that code to work
there is a error called Assets\Target.cs(22,6): error CS1513: } expected
i replayed this vid 6 times just to i can help funding , but they're arent any ads, means this tutorial is really earning nothing but it taught me a lot... i love you host
He-
He left us 10 months ago. 😭
@@urielcobo-cuisana2316 i agree , we all miss him. he was the best teacher ive seen so far.. do you know someone else like him that makes similar content for "unreal engine" ? cause im really looking for one
you are the special person that is making my dream job possible
I love how easy these tutorials are for beginner and experienced programmers.
You know Brackeys, THIS helped me a shit ton right now. Thank you!
Me: deletes start method,
visual studio: 12467147628794 errors.
Brackeys: deletes start method,
visual studio: 0 errors or warnings.
me: ok i dont get it
“And we’ll create a function... let’s call it die.”
Me whenever I’m boutta smacc someone SO HARD into the sun.
Void Die()
{
rb.AddForce(0,1000 * Time.deltatime, 0);
}
Like this?
By far teachers like yourself are what makes Unity shine
whose watching this after Brackeys quit?
OH OH ME!
yes me
yes :(
Yes me :( 😭
Me. :-(
This worked for me. Hope it helps someone struggling like me. PS. Great tutorial Brackey!!! Thanks!
This code is for those looking for a Gun Controller script.
public class MouseMovement : MonoBehaviour
{
float mouseSensitivity = 100f;
float xRotation = 0f;
public Transform gunBody;
public Transform player;
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
Rotate();
}
void Rotate()
{
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;
Vector3 gunRotation = gunBody.transform.rotation.eulerAngles;
Vector3 playerRotation = player.transform.rotation.eulerAngles;
xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -90f, 90f);
gunRotation.x = xRotation;
gunRotation.z = 0;
playerRotation.y += mouseX;
gunBody.rotation = Quaternion.Euler(gunRotation);
player.rotation = Quaternion.Euler(playerRotation);
}
}
The best video I have found about how to use raycasts, very well explained, with clear information.
Thanks for the video.
Brackeys: Now we shouldn’t see any errors.
unity: haha errors go BOOM BOOM
Same lol
Im having this error " 'Target'Does not contain a definitionfor'TakeDamage' and no accessible extension method'TakeDamage'accepting a first argument of type 'Target' could be found" please heelp🥲
@@ahmedmohamed-cd7xf i also have the same error
@@ahmedmohamed-cd7xf ok... I found one solution... Save your progress and than restart your project... It worked for me
@@sparkestic1238 wow it actually worked thank you so much❤❤
If anyone wants the raycast to shoot out of a specific point of the gun (like the muzzle) instead of out of the center of the screen, do this:
-First, go into the fire script
-change the "public Camera fpsCam" variable to a "public Transform muzzle" variable (you can name the Transform whatever you want, I chose "muzzle")
-Then in the "Void Shoot" function change the "fpsCam.transform.position" to "muzzle.transform.position" and the "fpsCam.transform.forward" to "muzzle.transform.forward"
-Now in the inspector drag and drop the muzzle of the gun into the "Muzzle" component.
-If your gun does not have a muzzle, create an empty object that is the child of the weapon, name it "Muzzle", and position it on the tip of your gun.
Hope this helps, it worked for me.
Hey, I used your code, its not dectecting the ray when I click. This is my code (I change it slightly)
using UnityEngine;
public class gun : MonoBehaviour
{
public float damage = 10f;
public float range = 100f;
public Transform muzzle;
// Update is called once per frame
void Update()
{
if(Input.GetKeyDown(KeyCode.Mouse0))
{
Shoot();
}
}
void Shoot ()
{
RaycastHit hit;
if (Physics.Raycast(muzzle.transform.position, muzzle.transform.forward, out hit, range ))
{
Debug.Log(hit.transform.name);
}
}
}
Nevermind sir I fixed it myself it was a issue with the rotation thank you for the info about the muzzle heres a free compliment...
"your cool" - me
Does this still work for now?
you're@@jacobscott8277
Ну и строчит, как пулемет, и все по делу ! Не то что другие жуют сопли и тянут резину. Лайк! Brackeys, you are an an awesome lecturer!
СОгласен! All right!
Жаль, что я раньше не додумался искать уроки по Юнити у зарубежных ютюберов)
Brackey: "we shouldn't see any errors"
Me: "laughs awkwardly while quietly fixing a console page full of errors"
Coding your own games is easier than you think.... u know.... you should take this online unity course on udemy...
this dude makes me crazy..!!
I always get that ad
-_-
and as soon as i gave u a thumbs up, UA-cam suggested i go add free with a subscription!.... ahhh!
Funny enough I've been taking that Udemy course starting this year. And supplemented with Brackeys it has been a lot of help. Glad I got the course before seeing the adds or else I would have been like fuck that
This is so killing me
As as always, *the curly brackets.* :)
I spent 12 days trying to get guns working in my game and MY BOY BRACKEYS HAD A VIDEO ON IT THE WHOLE TIME
By combining your tutorials i will make my own game soon. :)
Thats exactly what im doing now, except with my own terrible models and designs :)
everyone is LOL
@@tssper3488 Dude, you can use Google Poly for awesome models.
@@tssper3488 exactly da same
Same
4 years later still using it. You are a beast.
I have a problem with the target variable, it doesn't exist
@@robertoleto2399 it worked for me
I learned SO much from this one tutorial,
- I learned raycasts
- I learned more variables
- I learned how to acces scripts from scripts (lol)
- I learned how to make a crosshair
and WAY more, ty for the tutorial!
Anyone having issues with the muzzle flash:
Follow Brackeys settings, but when I learned the BIG thing stopping me from succeeded, I realized I didn't have to, because it changes AS YOU PLAY.
Follow exactly what he does, then parent gun model to camera(as in the start) then the particle system to the gun AND use it as the target as in 9:02.
After this, it's not shooting right? Well with the particle system parented in this path(camera-gun-particle system) go to the system and now reset the transform(like you do when you add the ground check empty to to character).
NOW try and it should work and any setting you change should be as you play!
Thanks A LOT
Thank you so much Brackeys, you are really the best teacher out there man!
If anybody is having trouble figuring out why their hit effect particles wont work(probably because you havent imported the effects system and just duplicated the muzzle flash and turned it into a hit effect basically), because you duplicated it, when you shoot it makes a new object right, so when its made its being awakened essentially, and because you duplicated the muzzle flash which had play on awake disabled, it wont display a hit effect. turn that bad boy on and you will have a hit effect when you shoot something. hope this helped anyone that struggled like i did
Would you maybe do a segment on weapon recoil?
Weapon Recoil isn't really hard. I figured out myself. Here a little demonstration:
First, you need a Recoil Vector:
Vector3 Recoil; //private or public doesn't Matter
And a max recoil amount:
public float RecoilAmmount = 0.2f; //private or public doesn't Matter again, but I would make it public for ease of use
Now before you cast your Ray we need to get a random Vector to change the direction the ray is firing. For that we can use Random.InsideUnitCircle which should give us a random point on a circle.
Vector2 recoil = Random.InsideUniCircle()*RecoilAmount;
When you now Fire your ray add the Recoil to the FPSCam.transform.forward so
if (Physics.Raycast(FPSCam.transform.position, FPSCam.transform.forward + Recoil, out RayHit))
Hoped this helped you and other People.
NOTE: I'm still a beginner. This should work, but I don't know if it is the most efficient way of doing it. I will make changes to this comment if someone has a better way.
Nice recoil script, I'm a beginner too but this gives a nice spread effect to a gun good work man
FYI, that script adds spread, not recoil.
-FLXKZ-
Couldn't you put random between (-recoilammount , recoilammount)
To get it on left as well?
Am I mistaking?
@@FLXKZ Very useful my dude
Really Useful Tutorial, We miss you Big Brack :(
Imagine being simply able to import the FPS character in later versions of unity
It would be NICE UNITY
Ok so i spent a week making my own, not the best substitute, but it will do
@@ArthurOliveira-zq1tw They don't now to try reducing the ammounts of assetflips made by incompetent people, I think.
Hey help me
@@not_herobrine3752 Brackeys has a tutorial for an fps character, you could have used that
If you use the impact effect, which creates the static mark on the object being hit and you don't want it to be destroyed, instead of using Destroy(impactGO, 2f), you can use ImpactGO.transform.parent = hit.transform to maintain the mark location on objects.
Anybody having the same problem of" 'Target'Does not contain a definitionfor'TakeDamage' and no accessible extension method'TakeDamage'accepting a first argument of type 'Target' could be found" please heelp🥲
how could I leave a bullet hole using that?
Thank you so much! Even after 4 years, this video still saved my life!!!!!!
Thank you for helping me make a game I had no clue on what to do and after watch like 5-6 videos I’m starting to get it just wanted to thank you for everything
Good! Thank you for the tutorials, greetings from Mexico!
Thank You So Much, I tried a few times and it didnt work but i finally got it working and am very happy with it and building off of it Thany You SOOOO SOOOO SOOOO MUC You do not understand how much this helped THANK YOU
if you want to sprint here is some code you can add:
in "void Update" add:
if (Input.GetKey(KeyCode.LeftShift))
{
speed = runSpeed;
}
else
{
speed = 6;
}
and add a public float called run speed with something similar to:
public float runSpeed = 10f;
and boom! you now have a simple running system in your game that can easily be changed.
just a suggestion for the commenters: If you have a recoil animation it helps to use an animation event and make the particles go off of that
I say this to every game developer.... Brackeys is a God👌
I wish he actually taught us how to make the muzzle flash cause I cannot figure out how he did it.
me too
@@gelis07 Yeah, I want that too. Maybe, he already made one? Can anybody tell me?
@@rgb_82 he made a video about unity's particle system
@@gelis07 thanks.
edit: in case if someone wants to watch that: ua-cam.com/video/FEA1wTMJAR0/v-deo.html
Watch Ups vid
This feels sad now
Yeah...
Aww :(
It really does
i swear im actually crying
it rlly hurts :(
6 years later still best tutorials
Is anyone having trouble making the muzzle flash?
Michael Murphy this is really late 😂😂 but I am having trouble as well. Did you find a solution to make it work?
SQUIGLEZ I just went through it again, make sure to pay meticulous attention to all the settings and check boxes he ticks.
I use the firerate but my muzzleflash just appear only onetime. why?
check if it's inside the if condition which you use to fire
no is simple
imagine actually finishing this in like 14 minutes, took me 4 hours to get everything working right.
it' a day 276.......
276 day with no success
Try 4 months dude
DId you get the error of
The type or namespace "Target" could not be found. Are you missing a using directive or assembly reference?"
I'm stuck with this problem. I feel like Brackeys lied a lot on his tutorials :(
@@victorrus01 Did you make target a public method?
@Grievous i had that problem and that fixed it
After watching and following the video I threw a salute so hard that I almost cracked my skull, thanks Brackeys.
You are a legend.
A-are you okay?
using UnityEngine;
public class gun : MonoBehaviour {
public float damage = 10f;
public float range = 100f;
public Camera fpsCam;
// Update is called once per frame
void Update () {
if (Input,GetButtonDown("Fire"))
{
Shoot();
}
}
void Shoot ()
{
RaycastHit hit;
if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
{
Debug.Log(hit.transform.name);
}
}
}
you sir are a god
Input.GetButtonDown and "Fire1" but thank you so much!!!
Isn't there more
@@carlosbaltazar5941 It's later in the video. This is the more boring stuff you don't have to really write to remember. It's intuitive.
You're a life saver
for those who just want the code
using UnityEngine;
public class gunscript : MonoBehaviour
{
public float damage = 10f;
public float range = 100f;
public float fireRate = 15f;
public Camera fpsCam;
public ParticleSystem muzzleFlash;
private object hit;
public GameObject impactEffect;
public float impactForce = 30f;
private float nextTimeToFire = 0f;
// Update is called once per frame
void Update()
{
if (Input.GetButton("Fire1") && Time.time >= nextTimeToFire)
{
nextTimeToFire = Time.time + 1f / fireRate;
shoot();
}
}
void shoot()
{
muzzleFlash.Play();
RaycastHit hit;
if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
{
Debug.Log(hit.transform.name);
target target = hit.transform.GetComponent();
if (target != null)
{
target.TakeDamage(damage);
}
if(hit.rigidbody != null)
{
hit.rigidbody.AddForce(-hit.normal * impactForce);
}
}
GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
Destroy(impactGO, 2f);
}
}
thank you man i appreciate it
thx
it does not work
@@Tex21622 idk man, that was the code in the video
you are a time saver Thanks man W comment
this is the video I visit the most... Thanks Brakeys!
Muzzle Flash Issue Solution:
The solution that I found was turning the fire rate to 10 or below, for some reason when its higher the muzzle flash doesn't show up. (Also make sure to do this in Unity and not in the code as "fireRate" is a public variable). Hope this helps.
For anone having issues with muzle flash and imapact effect i have found this asset which might be useful assetstore.unity.com/packages/vfx/particles/war-fx-5669
Thx
THANK YOU SO MUCH!!!!!!
YOU SAVED MY GAME!!!!!!
thx, they are cool assets too
thank you so much man this helps a lot
Thank you so much. im so bad at using UnitysParticleSystem. but it also changed my life in a good way.
best tutorial channel ever
Either I was watching this video with *X2* Speed or Brackeys was just going *SPEEDRUN!!!*
Well just watch it at 0.5x speed so he isn't going as fast as dream🤣🤣🤣🤣🤣
Thanks, man! That film was really helpfull!
m8 this aint a film, its a youtube video XD
This guy is..... I really love this guy.He is awesome.
He's gone tho...
If anyone is having the issue that I lost my mind over with the particles spawning randomly. Go to Auto Random Seed under the particle system and disable it. Then go over to the shape part and change it from a cone to a sphere and make the radius and radius thickness of the sphere something very small (like 0.0001). Hope this helps
A video about your Chrome Addons would be awesome!
thanks brackeys! your the one who got me interested in making games!
I Just came from the fps movement tutorial. Following along I made the gun a child of the main camera. but when I look up or down the gun has some weird stretching. How do I fix this??
Me 2 and dunno how to fix it
me too
anybody here know how to fix it
@@starky1768 how?
@@sami_Sahraoi well i did just create new script and used one script from danis tutorial ua-cam.com/video/XAC8U9-dTZU/v-deo.html&ab_channel=DanisTutorials and than i aded a gon with a script and it worked :)
If your mazle flash does not work then you need to rewrite the script.
void Update ()
{
if (Input.GetButtonDown ("Fire1"))
{
mazzleFlash.Play ();
Shoot ();
}
}
M A Z Z L E F L A S H
how about that default particle system in unity around 9:15 where can I find that???
Great videos , glad I found this channel.
I really do appreciate people taking the time to make content like this, regardless of motivation.
Tip for some people who may not be completely new to programming but are new to Unity and the way things are done, may help you to watch at like .75 - .85 speed. This might keep your head from exploding while trying to follow him around the Unity interface lol
Do you know why the time for fire isn't working they said Time.time is read only
@@unvisibleone5367 Not sure what your code looks like but.. Sounds like maybe you have something reversed.
Stating that it is read only sounds like maybe your mean to put something like
myvariable *= time.deltatime.
but instead have something like...
time.deltatime *= myvariable.
The first one will make myvariable some value multiplied by delta time. where as the second one tries to change deltatime which can not be done.
With out seeing your code , thats the best guess I can give you. If you havent solved it yet, I'd be happy to help a little more but would have to see some code.
@@michaelwilson8461 the code is
nextTimeForFire = Time.time * 1f / firerate ;
@@michaelwilson8461 never mind I fix it
@@unvisibleone5367 good stuff
Can you make a tutorial on how you made the particle system/lighting for the muzzle flash please? Love your vids! :D
dude in my unity the arena only has those fire things under slying platforms and thats it can someone help me ?
@@alpacino6859 what do you mean?
@@redtshirtgaming4418 I mean I only have those effects underneath the platforms but not all the arena can you help me ?
@@alpacino6859 I was getting the same problem. What I did was kept moving the particle emitter up until the particles were by the gun. Hope this helps! :)
@@redtshirtgaming4418 thx I am testing it right now
ah yes, the power of unity particle system
thicccc
I been searching around for fps shooting tutorials. This video is really helpful.
Pls do also gun animations, like reloading, aiming and so on! Awesome video!
You would have to rig and animate the gun 3d models in a program like blender instead of unity. You can look up rigging or animating a gun in blender, and i'm sure you'll get many results.
He can actually animate it in unity ,but the weapon shot be separate and he could then animate it in unity ,but also i prefer using other 3D software like Blender or Maya because they have much more features and tools for animation.
A lot of his tutorials work but I can’t get this one to work
How So?
you might try a different version of unity, I use unity 2019.2.3, and it should work for most things he shows
This video helped me implement fire rate in my FPS game, thanks brackeys! :D
0:30 I Recommend you to use blender when modeling your gun
@Thevenot Jacob yeah me too it need 6 gb minimum RAM and my pc is... 2gb RAM 😣😣
@@tt3bxitbag118 have yout tried ZBrush its really easy to run but a little complicated
I CANT 3D MODELLLL
@@tt3bxitbag118 i have 264 gb ram what PC you have?? lmao
The code target.TakeDamege (damage); doesnt work. And I dont know why because I was doing everything like you were doing.
Is Damage is spelled wrong its "TakeDamage" not "TakeDamege" you have an e where an a is needed
@@kelmish4200 yes I know I spelled that wrong but in the code I have TakeDamage and it doesnt work
@@SAPETConstantiam is your TakeDamage() public?
@@tharindu207 no it turnedout that i needed more code because of my camera in unity but now its working
@@SAPETConstantiam what code was this
holy brightness
The Automatic shooting was working but the particles still only showed when I clicked the mouse button not when I hold it so please help
make the particle system loop
Oh I already fixed it
Thanks for helping though
@@Konoshi186 what was your solution?
Now I know what whole unity is based on
public float
Thank you so much for this tutorial! Really helped out a tone with my new game.
lmao used this to simulate planting seeds
u
wanted to plant seeds in a game, and searched for a tutorial on how to make a gun work in unity........creative
@@billythebuilder8724 yeah it was mainly for the raycasting code but it worked pretty well, got rid of the health and killing stuff and instead of instantiating a particle system it instantiates seeds which grow
i abandoned this project tho
Hmmmm for the target script im getting a error
Assets/Gun.cs(24,13): error CS0246: The type or namespace name 'Target' could not be found (are you missing a using directive or an assembly reference?)
i got same issue
@robinadi7888 @janpaweii3115 If you don't create the script (or class) called 'Target', you would get the error. So make sure to create the 'Target' class or script.
I miss you, please come back :)
can you make a recoil effect vid plz
Its called an animation
@@cr1ms0n10 Thanks for replying although I finally figured it out on my own using animations.