Тёмный

First Person Controller - Basic Movement and Mouse Input (EP01) [Unity Tutorial] 

Comp-3 Interactive
Подписаться 16 тыс.
Просмотров 69 тыс.
50% 1

Hey guys! Join me in creating a fully functional first person controller inside of unity in 2021. This episode we'll focus on getting the basic keyboard and mouse inputs implemented so we have a working controller from day 1! Then in the following weeks we'll be adding in additional functionality to our controller such as sprinting, jumping, crouching and much much more!
Join me and learn your way through the Unity Game Engine, the C# language and the Visual Studio editor. Remember, if this video was useful then DROP A LIKE! 👍
🤩 SPONSORED LINKS:
www.gigatank3000.com
/ gigatank3000
Check out HEXED PERSPECTIVE:
Soundcloud: / hexmane
Spotify: open.spotify.com/artist/0eVrJ...
Instagram: hexmane?hl=en
Apple Music: / hexmane
💯 Want to help me out and allow me to keep making these tutorials? Consider supporting the channel on Patreon:
/ comp3interactive
😍 AWESOME high quality 3D game assets available here:
shop.runemarkstudio.com/?ref=...
💬 Join the Discord community here:
/ discord
📱 Find us on social media for more Tips and Tricks:
/ comp3interactive
/ comp3interactive
/ comp3int
📱 Play our games for FREE here on Google Play:
bit.ly/2TisAQo
#UnityTutorial #Unity3D #Comp3interactive #GameDev

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

 

3 июн 2021

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 191   
@neylos6587
@neylos6587 Год назад
Hi guys. I am a developer from Russia, so I apologize for my English. If you have a problem with a character moving diagonally faster than forward, to the right, etc, in the HandleMovementInput, you need to insert this: moveDirection = moveDirection.normalized * Mathf.Clamp(moveDirection.magnitude, 0, walkSpeed);
@JosephChancey
@JosephChancey 7 месяцев назад
Thank you!
@DonWon-uz3wp
@DonWon-uz3wp Месяц назад
When you add the sprint functionality in the next video, you will have to change walkSpeed to (IsSprinting ? sprintSpeed : walkSpeed)
@Sergey_gameDev
@Sergey_gameDev 17 дней назад
Im too from Russia! Im 13 ears old. End im beginner.
@TwistedSisler
@TwistedSisler 3 года назад
Subbing for this! This is the first tutorial for a FPS Controller I've found that includes crouching and additional features. This sounds like exactly what I need.
@zurkio6179
@zurkio6179 2 года назад
One of the best FPS Input Tutorials on RU-vid, hands down!
@HyrotoXaque
@HyrotoXaque 2 года назад
Just gonna be honest, you are the GREATEST unity tutorials channel I've ever came across. Whatever I need somehow ends up being in this channel in a way that is most useful, I've been using and modifying (depending on my needs) your pooling system in all of my games, everything you create works like a charm, thank you so much.
@Selfency
@Selfency Год назад
Honestly the best, most practical, thorough, and explained unity tutorial I've ever seen. You deserve way more attention.
@cryptigo
@cryptigo Год назад
This is BY FAR the best FPS controller I've seen yet! The adherence to Unity's coding standards and the use of abstraction makes this really easy to implement and extend off of
@gennarocc
@gennarocc 2 года назад
This is by far the best tutorial Ive run into for this topic. Thank you!
@ElitePiskincCZ
@ElitePiskincCZ 2 года назад
GREATEST unity tutorials channel i ever saw. You got my subscription and hope you will not end this. Love your tutorials, exactly what i need to learn!
@Jim_the_Hermit
@Jim_the_Hermit 9 месяцев назад
A new hope? You have no idea how long I've been searching for a FPS that I can understand and modify
@Mattdotnfo
@Mattdotnfo Год назад
this is THE BEST tutorial I have seen on unity FPS controller. you do a better job than the unity starter asset does of building an fps controller (theirs doesn't even include the ability the crouch, and yours does!). Thanks so much!
@vandermunnik
@vandermunnik Год назад
Absolutely brilliant!! Thank you for making this!! Have been looking everywhere to see where I can begin to make my own character controller from scratch since I'm very dissatisfied with the ones already out there (free and paid). Understanding how exactly it works makes it a lot easier to tweak it precisely you want it. Great stuff! Subbed!
@reneklassen
@reneklassen 2 года назад
Please never stop this Series
@shamelesscasual
@shamelesscasual 2 года назад
This is exactly what I was looking for! And delivered in a coherent manner! Thanks.
@paulberry3359
@paulberry3359 3 года назад
Just found your channel, really looking forward to the rest of the FPS series and to discover what you have planned to use with it! I did come here for the FPS controller, but seeing how you code and how clean it looks compared to so many others. I am definately going to be doing your NOT space invaders for legal reasons tutorials ;D --- Subbed
@Bob-ts2tu
@Bob-ts2tu Год назад
Briliant. After just downloading and using FPC's it's great to properly get a handle on them, so i look forward to following the whole series. Thanks
@dale7986
@dale7986 Год назад
THANK YOU SO MUCH BRO!!! the only FPS tutorial that has worked for me all day AGHHHH
@veskibateman2070
@veskibateman2070 Год назад
About 3 minutes in "now, I'm going to do this properly". Subbed.
@Notllamalord
@Notllamalord 10 месяцев назад
This is an amazing tutorial, It's hard to know where to start with these and do it well because it's so important to the feel of the game. I appreciate how clean the code is I'm learning from that the most. Also in the update loop, I would do "if(!CanMove) return" instead of wrapping the whole function, it does the same thing and is a bit cleaner
@nativenoah895
@nativenoah895 2 года назад
great video, really helpful and no errors :) gonna go watch all the other parts now
@audemkay
@audemkay 2 года назад
Great start!
@dremovremen1764
@dremovremen1764 Год назад
Amazing and professional tutorial and execution, I like the smoothness and coding simplicity (even though I don't understand all calculations :D). I also HATE up/down looking limitations in games. In Hitman 3 when you want to shoot that guy down on the lower floor with style, but you can't because of the 80 degree clamping.
@nomadicjester
@nomadicjester Год назад
Amazing work this is perfect for what I'm working on right now.
@O2Dev
@O2Dev 2 месяца назад
Very helpful, thanks!
@alexanderking7211
@alexanderking7211 10 месяцев назад
Very Clean so far!
@fredericoc6234
@fredericoc6234 2 года назад
Amazing! Please, keep it up!
@leksag3004
@leksag3004 2 года назад
Thanks, this tutorial will help me with my game a lot!
@bluemine8314
@bluemine8314 Год назад
Insane Video. Thank you very much for it!
@eternalschism362
@eternalschism362 11 месяцев назад
Clear and concise. Thank you.
@skrapr5457
@skrapr5457 Год назад
they playlist thumbnail colors are so pretty!
@josefmathan
@josefmathan 3 года назад
thank you very much............i needed this desperately
@mr.giray1542
@mr.giray1542 Год назад
YOU ARE A LİFESAVER!! my teacher put the deadline for this weekend and ı have no idea how to create full fps player movement... thanks man
@evelyndacre420
@evelyndacre420 Год назад
THANK YOU SO MUCH!!! You literally saved my life🥹🥹
@savagesharkhd9697
@savagesharkhd9697 Год назад
If anyone also feels like when they move and stop, that they slide a bit, its because Input.GetAxis grabs the smoothed/lerped value of the input (0 --> 1). Use Input.GetAxisRaw instead and it will be crisper and more responsive.
@SleepyMatt-zzz
@SleepyMatt-zzz 8 месяцев назад
Thanks for the helpful tip!
@JosephChancey
@JosephChancey 7 месяцев назад
@@SleepyMatt-zzz - this can be taken a step further if you want to control that smooth in/out sliding movement. Add these new variables: private float inputSmoothTime = 0.025f; private Vector3 r_playerInputSmoothed; private Vector3 smoothPlayerInput; Then, in the line below the implementation for "currentInput" add the following: smoothPlayerInput = Vector3.SmoothDamp(smoothPlayerInput, currentInput, ref r_playerInputSmoothed, inputSmoothTime); And be sure to change the GetAxis for current input to GetAxisRaw Then update "moveDirection" to use the new "smoothPlayerInput" moveDir = (transform.TransformDirection(Vector3.forward) * smoothPlayerInput.x) + (transform.TransformDirection(Vector3.right) * smoothPlayerInput.y);
@sarunassleikus6834
@sarunassleikus6834 2 года назад
Thanks for your time for making this tutorial
@shang_psycho7414
@shang_psycho7414 Год назад
Great tutorial!
@damislav
@damislav 3 года назад
Very easy to follow nice
@doolembovy
@doolembovy 2 года назад
Great tutorial! Thank you very much!
@mrbruh1505
@mrbruh1505 3 года назад
Very well explained
@mecobrabo5590
@mecobrabo5590 2 года назад
this is pure gold
@Sergey_gameDev
@Sergey_gameDev 16 дней назад
Cool!
@Glados44
@Glados44 2 года назад
Men you are awesome. You explain things in a way its so easy to understand me you are one of the few that write code clean and in order. I will follow your channel till the end of time. 🤙🏻🤙🏻 I know its weird to say this but if you need help with spanish for a game or something just Dm me. Have a great day Mike
@krasimirchonov5935
@krasimirchonov5935 3 года назад
Would be nice to adapt it for new input system and show how it works with joy pad
@yudanaim6849
@yudanaim6849 3 года назад
Since unity removed the essential fps it created a vacuum and a need so i already created it with the new input system. But I'm always happy to learn something .
@thefluffysquad7318
@thefluffysquad7318 3 месяца назад
allready love it and i havent even started (:
@juliaalder2007
@juliaalder2007 3 года назад
Could you show how to import a Mixamo character and make him walk and jump (and an idle animation) with the new input system? Even the UI changed with it and I'm confused how to do this for future projects.
@Mechinsam
@Mechinsam 2 года назад
thank you this helped alot
@athuldilip2479
@athuldilip2479 2 года назад
Great video, your pace of teaching is perfect! One doubt I have is we can get the forward vector of the controller by using transform.forward property right? Is there any reason why you used transform.TransformDirection(Vector3.forward) instead of that?
@dismal2553
@dismal2553 2 года назад
Hey awesome video btw! Going to scrap the original movement code i did and use yours instead. I do have a couple questions however if thats alright. 1. Will this be able to be updated for many other types of movement. I know you cover some so i will watch them but maybe different ones. 2. Is this able to be used for a character model that is animated? I know you have to rig the animations with inputs and whatever but yeah. Im quite new to c# so would love an in depth rundown of the code you have written for this. I get parts of it but i really would love to fully understand how it works. Anyway great vid and thanks!
@MrReallefauve
@MrReallefauve 3 года назад
Congrats for your new location bro :)
@comp3interactive
@comp3interactive 3 года назад
Thanks man, should be a decent upgrade! 😂
@syedsadiq8631
@syedsadiq8631 3 года назад
@@comp3interactive suggestion: 1.wallrunig. 2.SpeedLine when playermoving speed or sliding . 3.Gun Shop for PLAYER
@BlackoutfromMD
@BlackoutfromMD 3 месяца назад
VERY GOOD TUTORIAL, i saw you put private variables so they cant be accesed through a program
@mattdag881
@mattdag881 3 года назад
Hey I got a problem, when I write vector nothing pops up and an error message appears. Any reason why you think this might be happening?
@MVMborzoi
@MVMborzoi 10 месяцев назад
I am sad only this master piece has 51k view, and happy that I'm one of these.
@xil2331
@xil2331 3 года назад
This was an awesome tutorial!
@ReemusXcII
@ReemusXcII Год назад
4:02 lmao brilliant
@Legobuilder-yp8ig
@Legobuilder-yp8ig 2 года назад
Thank you very much
@madduckling4436
@madduckling4436 3 года назад
Is it possible to make a first person controller similar to the one in outlast or resident evil 7 and village?
@dacriaxvgr
@dacriaxvgr Год назад
This tutorial is superbly explained, however I still need to find how to migrate unity's New Input System to get it to work. I could try to create an InputManager script and get that component in the character controller.
@JosephChancey
@JosephChancey 7 месяцев назад
@comp3interactive - I am really struggling to normalize the player's movement when moving at a diagonal so the speed of the player does not go beyond what is defined by walkSpeed and sprintSpeed. With this kind of player controller, how do you typically normalize or clamp that kind of diagonal speed so it is not exceeding the desired value?
@lolgube
@lolgube Год назад
i know this tutorial is ages old but how would i go about clamping the Y axis? like looking left and right? since there isn't a distinct variable for it.
@JelowGames
@JelowGames 3 года назад
16:34 hey just wanted to let you know a small note here, This variable you set was -upper look limit and upper look limit for the lower look limit and the upper look limit which works completely fine but you made two variables lower look limit and upper look limit. Lower look limit wasn't used.
@comp3interactive
@comp3interactive 3 года назад
Aah good spot
@avanishpatitripathi1562
@avanishpatitripathi1562 2 года назад
You know, I have went through lots of tutorials videos and let me tell you, Yours is one of the best.. Why not post full length course of Udemy and other platforms? If you have it there then let me know, I would definitely love to purchase full course.
@QuietStudiosOfficial
@QuietStudiosOfficial 2 года назад
hey I've never used the character controller component before I was used to working with a rigidbody so there is an issue I can't seem to solve... whenever I move the player jitters really hard, and if I get close to wall it climbs it I have no idea why. I followed your tutorial seamlessly
@kovaghoul1515
@kovaghoul1515 Год назад
Not sure if I just missed it or not but If anyone is noticing the horizontal speed doesn't change when changing crouch and sprint speeds just do: private void HandleMovementInput() { currentInput = new Vector2((isCrouching ? crouchSpeed : isSprinting ? sprintSpeed : walkSpeed) * Input.GetAxis("Vertical"), (isCrouching ? crouchSpeed : isSprinting ? sprintSpeed : walkSpeed) * Input.GetAxis("Horizontal")); float moveDirectionY = moveDirection.y; moveDirection = (transform.TransformDirection(Vector3.forward) * currentInput.x) + (transform.TransformDirection(Vector3.right) * currentInput.y); moveDirection.y = moveDirectionY; } So that the conditions are also before the horizontal movement.
@riskiereel4766
@riskiereel4766 Год назад
thanks for the basic tutorial, now I just gotta figure out on my own how to make it react with physics properly, the Character Controller Component can't react with rigid body, so I'm gonna find a bypass to it.
@ognjenidjecak76
@ognjenidjecak76 Год назад
Hey Comp-3, I'm having an issue where my player only moves the camera up and down, not left and right. Any possible fixes for this?
@TheYapperDiaries
@TheYapperDiaries 7 месяцев назад
am i able to use the new imput system with this?
@Sebastian-bu7oj
@Sebastian-bu7oj Год назад
So I have implemented the code you have made onto Unity and have tested it out. It works fine but is the player supposed to continuously move on its own? If not, then I would really like to know how to fix this issue.
@yellow2188
@yellow2188 Год назад
How to make the Player slide on surfaces with the "ICE" tag?
@micmalawi
@micmalawi Год назад
Now, before I start doing this tutorial, I just need to know - does this character controller allow me to save player position?
@francescogerlin8006
@francescogerlin8006 Год назад
Can I ask you something? I I would like when I click a or d the camera rotates. I know how to rotate the camera but I can't understand how to tell the camera to do it with Input.GetAxis("Horizontal"). (I'm pretty new in coding) Thanks for any response
@AlexTuduran
@AlexTuduran 4 месяца назад
It's best to capture the input in Update and apply the movement in FixedUpdate, since this is related to physics. Otherwise, your movement might get jittery in certain moments.
@user-gb8ho7gv9w
@user-gb8ho7gv9w 10 месяцев назад
Does it work the same with the ovr player controller for VR
@Agent_blablabla
@Agent_blablabla Месяц назад
I'm having an issue with the gravity. I've tried removing the Time.deltaTime that it is multiplied by in the first half of the HandleFinalMovement() function because it is otherwise multiplied by Time.deltaTime twice. This has (sort of) worked, but if there is a better solution, can you please tell me?
@bigbulkcat
@bigbulkcat Год назад
Thank you
@lottodagreat4666
@lottodagreat4666 Год назад
How do I add movement animations to this script?
@user-yf9ek6hk5k
@user-yf9ek6hk5k 5 месяцев назад
please can some respond to this with the code he uses for the first person controller as when i type it it doesnt work please
@alibiamanzolov1265
@alibiamanzolov1265 2 года назад
Hi. Why you called ApplyFinalMovements in update method? Isn't it right to use it in the FixedUpdate method?
@batsrevengee
@batsrevengee 2 года назад
For me it keeps saying "The script don't inherit a native class that can manage a script." Can someone help me?
@Klova-jn1fx
@Klova-jn1fx 7 месяцев назад
Is there anywhere I can copy your code to do a side-by-side comparison? I feel like I missed something after 7ish tutorials and I can't for the life of me find where I screwed up. 🙃
@DoiceNoice
@DoiceNoice 2 года назад
I have another error, It keeps on going in one direction and doesnt stop, like to the side of my view camera. Please help me with this issue -GlimmerGo0se
@stravvman
@stravvman 2 года назад
I think something wrong with this gravity code. The acceleration needs to be reset when you hit the ground.
@JoseyThomasty
@JoseyThomasty Год назад
can you copy all of the code so we can past it into unity?
@ProfitEmpire
@ProfitEmpire 2 года назад
Hey, the movement is good, however when you move diagonally you speed up, is there a way to normalize the movement so that when you move diagonally you dont go any faster, thanks!
@stan2947
@stan2947 2 года назад
Having the same issue stil trying to figure it out
@stan2947
@stan2947 2 года назад
Oke got it fixed so here are the first changes, currentInput = new Vector2(Input.GetAxisRaw("Vertical"), Input.GetAxisRaw("Horizontal")).normalized; change the Getaxis to GetAxisRaw and add normolized to it. I know this will feel weird because it is instand. we are gonna fix that add 3 new variables private Vector2 CurrentVector; private Vector2 currentInput; private Vector2 SmoothInputVel; then add this line under the getAxisRaw CurrentVector = Vector2.SmoothDamp(CurrentVector, currentInput, ref SmoothInputVel, SmoothInputSpeed); then change the line in "ApplyFinalMovements(); from this characterController.Move(moveDirection * Time.deltaTime); to this characterController.Move(moveDirection * WalkSpeed * Time.deltaTime); It should work I dont know i am not an expert. if you still have question's tell me know
@Rahulsingh-theraha
@Rahulsingh-theraha 2 года назад
My solution is that : 1. add ur vertical and horizontal movement --say into vector 3 moveInput 2.now get the magnitude of it by moveinput.magnitude and clamp it in between 0 to 1 (important) 3. Normalize the moveinput 4.simply multiply the moveinput with time.deltatime,magnitude u measured above and lastly with a movespeed variable Lastly use the moveinput in move method of character controller By doing this method diagonally ur speed never go higher than vertical and horizontal speed
@mikkelduch2920
@mikkelduch2920 2 года назад
@@Rahulsingh-theraha This seems right but I cant make it work proberly. Will you please make a comment with the clean code and where to put them in the script?
@employerslave
@employerslave 9 месяцев назад
can you make an inventory system?
@El-Iks
@El-Iks 2 года назад
Why wasn't Cinemachine used? With it, there wouldn't be a need for Look Parameters.
@F0r3v3rT0m0rr0w
@F0r3v3rT0m0rr0w 2 года назад
Cheers for this tutorial, do you ever update the code to accept unities new input system ? i feel like you would do a really good job explaining that confusing (while very useful) mess.
@comp3interactive
@comp3interactive 2 года назад
Thanks man. I'm hoping to do a separate tutorial / mini series explaining the "new" input system, even though it's been around for a few years now I still haven't used it much myself so I'm still getting completely familiar with it before making a tutorial on it
@F0r3v3rT0m0rr0w
@F0r3v3rT0m0rr0w 2 года назад
@@comp3interactive awesome to know! good luck and thank you for the reply.
@D4rkOriginalYT
@D4rkOriginalYT Год назад
Hi, i dont know why but i cant resolve this problem. When i wrote characterController.Move my visual studio say that was an error because CharacterController doesn't contain a definition of Move. Here is my code: using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class CharacterController : MonoBehaviour { public bool canMove { get; private set; } = true; [Header("Movement Parameters")] [SerializeField] float walkSpeed; [SerializeField] float gravity = 30f; [Header("Look Parameters")] [SerializeField, Range(1, 10)] float lookSpeedX = 2f; [SerializeField, Range(1, 10)] float lookSpeedY = 2f; [SerializeField, Range(1, 100)] float upperLookLimit = 80f; [SerializeField, Range(1, 100)] float lowerLookLimit = 80f; private Camera playerCamera; private CharacterController characterController; private Vector3 moveDirection; private Vector2 currentInput; private float rotationX = 0f; bool isGrounded; void Awake() { playerCamera = GetComponentInChildren(); characterController = GetComponent(); Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } // Start is called before the first frame update private void Start() { } // Update is called once per frame void Update() { if (canMove) { handleMovementInput(); handleMouseLook(); applyFinalMovements(); } } void handleMovementInput() { currentInput = new Vector2(walkSpeed * Input.GetAxis("Vertical"), walkSpeed * Input.GetAxis("Horizontal")); float moveDirectionY = moveDirection.y; moveDirection = (transform.TransformDirection(Vector3.forward) * currentInput.x) + (transform.TransformDirection(Vector3.right) * currentInput.y); moveDirection.y = moveDirectionY; } void handleMouseLook() { } void applyFinalMovements() { if (!playerCharacterController.isGrounded) moveDirection.y -= gravity * Time.deltaTime; characterController.Move(moveDirection * Time.deltaTime); } }
@IGameShit
@IGameShit Год назад
one aspect fogotten to mention but you can see it at 14:38 is that you need to add the controller script to the controller parent so it actually knows what to do. i know its a basic thing but it had me stuck a little bit until I saw that.
@saudalkadi7225
@saudalkadi7225 Год назад
hey im stuck at that part and i keep getting this error NullReferenceException: Object reference not set to an instance of an object FPScontroller.applyfinalmovement () (at Assets/FPScontroller.cs:68) FPScontroller.Update () (at Assets/FPScontroller.cs:48) is it related to what you were saying
@dismal2553
@dismal2553 2 года назад
I also have another problem where when completing the script and dragging it onto the firstpersoncontroller game object inspector, no references come up resulting in a not working code
@dismal2553
@dismal2553 2 года назад
@Thijs Ritter no bro lol, i just gave up rip but hope u find a solution. And if u do, maybe post it here so i can try again lol.
@LM-cc7qz
@LM-cc7qz 2 года назад
bruh, I thought that since I was using the new input system my code was broken even though it should have worked because it isn't that hard to get it working with the new input system but at the top I forgot to set can move to true. smh
@arreo1a626
@arreo1a626 2 года назад
i just subscribed, however... your not the next Brackeys, your the first Comp-3 Interactive (BTW I mean this in a good way)
@mrbruh1505
@mrbruh1505 3 года назад
When I try to make my left movement snappy by adding some float value in player's current position and then apply that whole value to main movement then console says that cannot transform unity.vector3 to float.
@comp3interactive
@comp3interactive 3 года назад
You need to add the value as a Vector3 instead of a float. So moving left you'd do something like transform.position += new Vector3(-1,0,0);
@mrbruh1505
@mrbruh1505 3 года назад
@@comp3interactive thank a lot , sir
@cornontheglobe2883
@cornontheglobe2883 6 месяцев назад
If you could tell me the clamp function is not working and it keeps saying that it needs two arguments
@cornontheglobe2883
@cornontheglobe2883 6 месяцев назад
nevermind I fixed it :)
@ukaszzagaja9395
@ukaszzagaja9395 2 года назад
Gravity is not working, original camera controller from URP as child works as basic movement so i can only move camera with using rmb, q and e buttons works exactly like in camera controller from urp
@xiscc-14debopomroychowdhur52
@xiscc-14debopomroychowdhur52 2 года назад
When I fall from a height the gravity seems to be increasing with time
@user-uw7ys1vs7x
@user-uw7ys1vs7x Год назад
hey i copy pasted your code but the movement becomes faster when walking diagonally, i tried to use normalized but it turned the walk speed to 1 which is waaaay too slow for me, do you have any fix for the boost of speed u get when pressing up and right at the same time? its twice as fast...
@alec304
@alec304 11 месяцев назад
normalise it and then scale the vector by a certain value! so have a speed multiplier
@mrbruh1505
@mrbruh1505 3 года назад
Tell me why this happens
@itzaikohere2857
@itzaikohere2857 Год назад
just getting into this series, let's see how long i can last!
@random_precision_software
@random_precision_software 3 года назад
Yea man, sounds interesting, I'm always using fps controllers and each time I do one, it's different, maybe this would be a good template for me!
@thepolygonpilgrimage
@thepolygonpilgrimage 3 года назад
"First" :) Another great video Mike, thanks!