2 time-saving tips: edit the script template so it doesn’t include all the boiler plate code you always remove anyway and there is a setting under preferences to create objects at origin so you don’t need to reset the transform every time you create a new GameObject.
Hi there! Great tutorial as always. I've implemented this after doing the Hollowknight style camera tutorial which took a bit of figuring out as it effected the rotation of the gun (if anyone wants help just ask). The multiple cameras caused problems. I am trying to modify this to suit my game. I have an ability system with upgrades and have tried to add a multishot upgrade, but its a bit buggy at the moment, it shoots three bullets at once in an arc but the extra two just shoot sideways :( I used Quaternion.Euler in the Instanciation of the bullet to be able to change its y axis rotation but that hasn't worked. I'm also struggling with trying to flip the character when rotating the gun past 90/-90 degrees like the gun. The player movement and jumping is turned off and the attack ability is turned on as well as the gun when holding down the attack button. The player can flip when aiming past 90/-90 degrees like the gun however, when exiting the attack (Releasing attack button), if the player is facing left it messes up the flip function of the player so that he is facing the wrong way when moving. I'm sure ill figure it out, but if anyone has a good solution for flipping the character I'd appreciate the help!
@@suzyeon4222 Hi, I had the same problem and came up with a simple solution. Instead of flipping my player, I flip the sprite. Next, in my gun script, i modified this : float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg; Vector3 localScale = new Vector3(1f, 1f, 1f); Vector3 localPos = gun.transform.localPosition; if(angle > 90 || angle < -90) { localScale.y = -1f; localPos.x = -1f; } else { localScale.x = 1f; localPos.x = 1f; } gun.transform.localScale = localScale; gun.transform.localPosition = localPos; If flips the gun depending on the facing direction of the sprite of the player. Hope this helps !
At 5:45, you could have just used gun.transform.localEulerAngles.z instead of rotation. Correct me if I am wrong. In the end, you use interface and grab a reference to that instead of grabbing enemy script. The reason you say is because there are other objects that get destroyed by bullet. But, you wouldn't add enemy script on other objects. Right ?. So only enemy gets to have enemy script and you don't need an interface there. Really loved your video
I love these!
Would want to see you cover the system part, like game saving, data structure, handling multiple scenes etc.
thanks! Already had two of those on my future list ;)
AMAZING !!!! You saved me for my Second Semester project love you
Have you thought about doing a tutorial on the weapon system? Switching between weapons, maybe adding UI icons, etc.
Clear and comprehensible. Thank you!
2 time-saving tips: edit the script template so it doesn’t include all the boiler plate code you always remove anyway and there is a setting under preferences to create objects at origin so you don’t need to reset the transform every time you create a new GameObject.
those are 2 things I've been procrastinating lol. Thanks for the tip, I'm going to have to do both of those
A much simpler solution for handling collisions is to just use the collision matrix in the physics settings. That negates the need for any code.
All of your videos are super helpful and very concise. Thank you
Genuinely insane
Love your devlogs
Thank you!
A cool follow-up video would be how to use ScriptableObjects for bullet types.
I love scriptableObjects :D
Super helpful!
There is one thing that I need help with. When I rotate my gun, it has a weird pivot to it and it doesn't stay in its assigned spot. Please help!
i have an issue with the layer mask
Please update the lesson for perspective camera! It seems to mess up your code
Hi there! Great tutorial as always. I've implemented this after doing the Hollowknight style camera tutorial which took a bit of figuring out as it effected the rotation of the gun (if anyone wants help just ask). The multiple cameras caused problems.
I am trying to modify this to suit my game. I have an ability system with upgrades and have tried to add a multishot upgrade, but its a bit buggy at the moment, it shoots three bullets at once in an arc but the extra two just shoot sideways :( I used Quaternion.Euler in the Instanciation of the bullet to be able to change its y axis rotation but that hasn't worked.
I'm also struggling with trying to flip the character when rotating the gun past 90/-90 degrees like the gun. The player movement and jumping is turned off and the attack ability is turned on as well as the gun when holding down the attack button. The player can flip when aiming past 90/-90 degrees like the gun however, when exiting the attack (Releasing attack button), if the player is facing left it messes up the flip function of the player so that he is facing the wrong way when moving. I'm sure ill figure it out, but if anyone has a good solution for flipping the character I'd appreciate the help!
I would argue that as you are setting the transform right to the velocity it doesn't need to be done inside a FixedUpdate.
just gave it a shot in Update, and it produced weird janky movement. Definitely works best in FixedUpdate
@@sasquatchbgames Then you did it wrong
my bullet is being destroyed when it spanws, what can i do?
when I rotate, the gun rotates in the wrong direction. Please help
i mean the sprite rotates in the right direction but when im facing left side it's the opposite direction. sorry my English is bad
@@suzyeon4222 Hi, I had the same problem and came up with a simple solution.
Instead of flipping my player, I flip the sprite.
Next, in my gun script, i modified this :
float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
Vector3 localScale = new Vector3(1f, 1f, 1f);
Vector3 localPos = gun.transform.localPosition;
if(angle > 90 || angle < -90)
{
localScale.y = -1f;
localPos.x = -1f;
} else
{
localScale.x = 1f;
localPos.x = 1f;
}
gun.transform.localScale = localScale;
gun.transform.localPosition = localPos;
If flips the gun depending on the facing direction of the sprite of the player.
Hope this helps !
This tutorial just didn't really work there was multiple issues.
First
Nobody beats Coco!
At 5:45, you could have just used gun.transform.localEulerAngles.z instead of rotation. Correct me if I am wrong.
In the end, you use interface and grab a reference to that instead of grabbing enemy script. The reason you say is because there are other objects that get destroyed by bullet. But, you wouldn't add enemy script on other objects. Right ?. So only enemy gets to have enemy script and you don't need an interface there.
Really loved your video
A more concise syntax is if (collision.gameObject.TryGetComponent(out var damageable)) …
Cheaper than a null comparison
Thanks for the tip! I'm going to try that out