|
|
Line 3: |
Line 3: |
| <div style="float:right; padding:15px;">__NOTOC__</div> | | <div style="float:right; padding:15px;">__NOTOC__</div> |
|
| |
|
| = Devlog 001 - First Steps =
| | *[[DL-01|Devlog 001 - First Steps]] |
| <span id="todays-goals"></span>
| |
| == Today's Goals ==
| |
|
| |
|
| * Custom Character
| |
| ** Simple Mesh
| |
| * Movement
| |
| ** Crouch / Prone
| |
| *** Animations
| |
| **** Idle
| |
| **** Forward
| |
| ** Run
| |
| * Camera
| |
| ** Rotate
| |
| ** Tilt a bit
| |
| ** Zoom
| |
|
| |
| <span id="what-i-did"></span>
| |
| == What I Did ==
| |
|
| |
| <span id="custom-character"></span>
| |
| === Custom Character ===
| |
|
| |
| Made a derpy dude and rigged him to the UE5 Quinn Mannequin.<br />
| |
| I'm getting skeleton errors but it works fine, it's probably a scaling thing.<br />
| |
| Hopefully he enjoys his new life here and the errors aren't causing him discomfort.
| |
|
| |
| [[File:001 - SM MySweetBoy.png]]
| |
| === Movement ===
| |
|
| |
| I changed the default WASD to follow the camera rotation, I don't remember if it was necessary but it feels cleaner so.. (I should really write this while I'm doing it instead of afterwards)<br />
| |
| Also set up some Inputs with the Enhanced Input System<br />[[File:001 - Inputs.png]]
| |
|
| |
| I followed [https://www.youtube.com/watch?v=3SpmZJqHo1U this video] and made an Enumerator with the different Mobility States; Standing, Crouching and Crawling.<br />
| |
| Then in the Player Controller, using a Select Node you can choose a new state depending on the state you're already in, and then with another you can set what speed to move.<br />
| |
| It's the same set-up for crouching and crawling, super easy.
| |
|
| |
| Running is similar but I used a Switch instead of a Select, and if they are standing then he can run and it changes his speed. I was thinking I might do something with running in other states but I might change it.<br />
| |
| It's a Hold to Run thing (Stamina to come oh boy), so Started he runs and Completed it switches back to walking
| |
|
| |
| <span id="animations"></span>
| |
| ==== Animations ====
| |
|
| |
| I got some Crouching and Crawling animations from [https://www.mixamo.com/#/ Mixamo], and retargeted them to our skeleton.<br />[[File:001 - Animations.png]]
| |
|
| |
| <span id="animation-bp-and-blendspaces"></span>
| |
| ==== Animation BP and Blendspaces ====
| |
|
| |
| Created simple Blendspaces for the Crouching and Prone animations, made a new animation blueprint (ABP_Human).<br />
| |
| I copied over everything from Manny's ABP, except for the control rig part because of skel errors.<br />[[File:001 - ABPandBSs.png]]
| |
|
| |
| In the ABP_Human<br />
| |
| Cast the MobilityState from the BP_PC to set the MobilityState of the AnimBP in the Event Graph<br />
| |
| Added Crouching and Prone States to the Locomotion StateMachine, and linked them up based on what MobilityState he is in.
| |
|
| |
| <span id="camera"></span>
| |
| === Camera ===
| |
| <span id="rotation"></span>
| |
| ==== Rotation ====
| |
|
| |
| Here I got the Mouse Input XY and inverted the Y axis.<br />
| |
| Multiply that by CameraRotationMultiplier which decides how fast the SpringArm(and Camera) will rotate around the player<br />
| |
| Then we just add that to the current Rotation of the SpringArm to get a new value, and add a clamp to the Y so it stay's more or less top-down.<br />
| |
| Lastly we take the new Rotation value and set it as our SpringArm's Rotation.
| |
|
| |
| <span id="zoom"></span>
| |
| ==== Zoom ====
| |
|
| |
| The Zoom is a little more work because I like the Idea of having pre-determined zoom levels.<br />
| |
| First we figure out if the scroll wheel is going up or down by comparing the value to 0.<br />
| |
| If it's higher, +1 to the Zoom Level, clamped at 3<br />
| |
| If it's lower, -1 to the Zoom Level, clamped at -3<br />
| |
| Then take that and set it as the current CameraZoomLevel
| |
|
| |
| Once we've got our new Zoom Level we can multiply it by the CameraZoomDifference, which is how much it zooms between levels.<br />
| |
| This gives us how far we should be from the original distance. Subtracting that from the default SpringArm length gives us our offset.<br />
| |
| then just lerp between the spring arm length we're at now and the result we just got and the camera moves smoothly to the new distance.
| |
|
| |
| <span id="bp_pc-eventgraph-movement-control-graph"></span>
| |
|
| |
|
| |
| == Character Blueprint (BP_PC) ==
| |
| <span id="bp_pc-eventgraph-camera-control-graph"></span>
| |
| ==== [https://blueprintue.com/blueprint/apoots0k/ BP_PC: EventGraph (Camera Control Graph)] ====
| |
| <iframe key="bpue" p="render/apoots0k" w="1200" h="600"/>
| |
|
| |
| === [https://blueprintue.com/blueprint/uuwr7x5v/ BP_PC: EventGraph (Movement Control Graph)] ===
| |
| <iframe key="bpue" p="render/uuwr7x5v" w="1200" h="600" />
| |
|
| |
| === [https://blueprintue.com/blueprint/s_9i1wjz/ ABP_Human: AnimationBP] ===
| |
| <iframe key="bpue" p="render/s_9i1wjz" w="1200" h="600" />
| |
|
| |
|
| |
| Refs<br />
| |
| [https://www.youtube.com/watch?v=3SpmZJqHo1U Metal Gear Solid 3 Stealth System | Two Minute Tutorials | Unreal Engine 4] by [https://www.youtube.com/@YahyaDanboos Yahya Danboos]<br />
| |
| </div> | | </div> |