Godot 4 Sourcelike Ladder Movement Tutorial | Intuitive Movement & Ladder Boost

Поделиться
HTML-код
  • Опубликовано: 23 дек 2024

Комментарии • 35

  • @MajikayoGames
    @MajikayoGames  7 месяцев назад +3

    *NOTE/CORRECTION:* I just realized line 216 is not necessary as it's referencing (local) basis vectors for both camera and ladder. You don't need this and it will work fine, so I recommend taking it out. In fact it may bug out if your Camera3D setup is slightly different than mine. Here you can see I simplified to just dot product of 45 degrees from up with forward move:
    github.com/majikayogames/SimpleFPSController/commit/d6a00968cc56cb02923a4986cb1374bd162e594b

  • @sinecure5
    @sinecure5 7 месяцев назад +5

    Thank you so much for these tutorials. No one else is covering these topics, especially stair stepping. You are creating tremendous value for the Godot community!

    • @MajikayoGames
      @MajikayoGames  7 месяцев назад

      Appreciate your comment :D I plan to add a bunch more to this series. Also working on an update to my free SimpleDungeons addon so I hope I can continue providing value to people!

  • @cataclysmicnothing
    @cataclysmicnothing 6 месяцев назад +2

    Come to learn how to walk up stairs, stay for everything else.
    Great playlist. Really appreciate the notes/corrections in pinned comments and seeing you respond to others' suggestions in the comments.

  • @mattlarson2893
    @mattlarson2893 7 месяцев назад +5

    A small improvement would be using a signal, either on the ladder or on the character, to inform the character to start climbing to avoid checking every ladder in the whole scene. Doing it this way bypasses the broad phase so it could get laggy if there are a lot of ladders. Cheers, great series

    • @MajikayoGames
      @MajikayoGames  7 месяцев назад +1

      thank you. yes it might be a little faster if using signals, however the Area3D is only updated as to whether its overlapping once per frame anyway, so we still check however many ladders each frame but i thought it should be negligible as it's not actually a physics check i dont think
      docs.godotengine.org/en/stable/classes/class_area3d.html#class-area3d-method-overlaps-body

  • @Creationkitnz
    @Creationkitnz 5 месяцев назад

    Awesome series so far man! Would love to see this put into a state machine! 🔥

  • @amirosman8797
    @amirosman8797 7 месяцев назад +1

    Awesome bro 👏, this tutorial keeps getting better and better, I really hope you’re planning on adding arms, weapons, shooting and stuff like that

    • @MajikayoGames
      @MajikayoGames  7 месяцев назад +1

      Yep, going to work on my SimpleDungeons addon for a bit, but after that one of the next things will be weapons & character model. Glad you enjoyed! :)

    • @amirosman8797
      @amirosman8797 7 месяцев назад +1

      @@MajikayoGames Perfect 👍

  • @MemnaiaPapkaForU
    @MemnaiaPapkaForU 6 месяцев назад +2

    Please show us how to make a hook / Grappling gun🤔

  • @debiprasad3946
    @debiprasad3946 7 месяцев назад +2

    Please make a video on player and vehicle interaction

    • @MajikayoGames
      @MajikayoGames  7 месяцев назад

      Will add this to my list of ideas :) I still have a bunch of tutorials to get through for this series I have planned. Next is going to be a weapon manager, HUD, and character model.

  • @elq9422
    @elq9422 19 дней назад

    cool video, thanks for the material
    However, I have a question: is it possible to make the entrance to the ladders from either side? I make maps with trenchbroom, so this question is quite painful.
    As far as I understand, the position is determined by var pos_rel_to_ladder := ladder_gtransform.affine_inverse() * self.global_position

  • @KorinDevsDumbStuff
    @KorinDevsDumbStuff 7 месяцев назад +2

    for me the jump velocity multiplier was a bit to hight but 0.5 did the job

    • @MajikayoGames
      @MajikayoGames  7 месяцев назад +1

      glad it worked for you :D thanks for the comment. yeah it depends on how you want your game to feel.

    • @KorinDevsDumbStuff
      @KorinDevsDumbStuff 7 месяцев назад +1

      @@MajikayoGames thank's, amazing tutorial series by the way

  • @Yeij
    @Yeij Месяц назад +1

    banger after banger tutorial, dude!! after implementing the source ladder code, my camera no longer clamps so i can do a complete vertical 360 with mouse look. i noticed this began to happen after i interacted with a ladder, would you know what's caused this to happen?
    ive also noticed that the camera clamp breaks when entering water, interacting/hovering with interactables, and sometimes after just seemingly nothing happening. so maybe it wasn't the ladder code? also my player no longer collides with physics objects, but sometimes when the camera clamp breaks i noticed my physics object ball get launched and spiral around in the air. sorry for all the text, i'm not trying to drop all of this onto you. im mostly concerned about the camera clamp suddenly not working under specific conditions. if it helps, i also have camera tilt and procedural weapon sway/recoil code in the FPS controller script.
    edit: ok i found out it was my cam tilt function that was breaking the camera clamp. weird physics object stuff still happening, but progress is progress
    edit 2: yo never mind turns out the whole time i had moved the sphere mesh away from the collision, nothing was "broken" this whole time in terms of physics lmfao. i was able to reintegrate my cam tilt by using %Camera3D instead of calling a Node3D that held the Camera3D as its child. everything's good in the world...

    • @MajikayoGames
      @MajikayoGames  Месяц назад

      glad you're enjoying the tutorials and glad you figured it out!

  • @Qyedo
    @Qyedo 2 месяца назад +1

    Can I by any chance download this version of the project? Without 3rd person and animations

    • @MajikayoGames
      @MajikayoGames  2 месяца назад

      Commit a90a00a386b0f20a885b73f7d51c775f4947b764 was the last before i added 3rd person modes

  • @Lexiosity
    @Lexiosity 26 дней назад

    is there one for how Half-Life 2 does it, where you press the interact key and it puts you in the climbing state and then to exit the climb state, you press Interact Key or Jump Key?

  • @tyler361t2
    @tyler361t2 6 месяцев назад +1

    any ragdoll physics?

    • @MajikayoGames
      @MajikayoGames  6 месяцев назад

      im interested in doing a video on this but i have some other stuff planned first :)

  • @collinvisser7108
    @collinvisser7108 7 месяцев назад +1

    Neat - thx

  • @JohnDev2579
    @JohnDev2579 5 месяцев назад

    goat.

  • @c-domination
    @c-domination 7 месяцев назад +1

    You need to teach us how to replicate the source surfing.

    • @MajikayoGames
      @MajikayoGames  7 месяцев назад

      I already did a video covering this :) ruclips.net/p/PLbuK0gG93AsHID1DDD1nt4YHcdOmJvWW1
      This is the 8th video. The 1st of the playlist covers surf & bhop.

  • @CarlJohnson0910
    @CarlJohnson0910 5 месяцев назад

    Thanks so much for the tutorials! These are really useful and your implementation of all of these is miles better than what i previously did. I just want to know if you'd be willing to create a video where you replicate the rocket jumping of quake into this character controller! Id really love it if you did. Heres how i currently have done it, hopefully you can improve the code!
    Add these two variables to the top:
    @export var force : float = 30.0
    @export var blast_radius : float = 8.0
    create a function
    func fire():
    if Input.is_action_just_pressed("fire"):
    print("fire pressed")
    if %RayCast3D.is_colliding():
    var mag = global_position.distance_to(%RayCast3D.get_collision_point())
    if mag < blast_radius:
    velocity += (%RayCast3D.get_collision_point().direction_to(global_position) * force) * (1 - (mag / (blast_radius * 2)))
    and then call it in process like so: (I couldnt get the function to work anywhere else except here)
    func _process(delta):
    if get_interactable_component_at_shapecast():
    get_interactable_component_at_shapecast().hover_cursor(self)
    if Input.is_action_just_pressed("interact"):
    get_interactable_component_at_shapecast().interact_with(self)
    fire() #THIS IS THE LINE THAT HAS CHANGED AND THAT I ADDED

  • @debiprasad3946
    @debiprasad3946 7 месяцев назад +2

    Player and vehicle interaction

  • @debiprasad3946
    @debiprasad3946 7 месяцев назад +2

    Entry and exit to the vehicle

  • @debiprasad3946
    @debiprasad3946 7 месяцев назад +2

    Please.......