Majikayo Games
Majikayo Games
  • Видео 16
  • Просмотров 112 568
Procedurally Generated 3D Dungeons v2
This video gives an overview of my procedural dungeon generation system created for Godot.
Full tutorial: ruclips.net/video/v58l05FsdPs/видео.html
Web demo: majikayogames.github.io/SimpleDungeonsDemo/demo.html
Grimhaven by Fridge Games: www.youtube.com/@fridge.interactive / x.com/fridge_game
Rift of Nostaria: www.youtube.com/@RiftOfNostaria / x.com/RiftOfNostaria
GitHub repo for the Godot addon: github.com/majikayogames/SimpleDungeons
Contents of this video:
0:00 - Intro
0:37 - Game 1: Grimhaven
1:39 - Game 2: Rift of Nostaria
2:20 - New features
5:10 - Algorithm explanation
9:56 - Debug info upgrade
12:02 - Final thoughts & outro
If you enjoyed this video, consider supporting the channel on Patreon or...
Просмотров: 3 393

Видео

Procedural 3D Dungeons In Godot 4 Tutorial | SimpleDungeons Add-on Fully Explained
Просмотров 2,4 тыс.3 месяца назад
Full tutorial & explanation of the code behind my SimpleDungeons Add-on. SimpleDungeons addon GitHub: github.com/majikayogames/SimpleDungeons Contents of this video: 0:00 - Intro 1:00 - Features overview 8:21 - Basic setup tutorial 19:50 - DungeonGenerator3D options overview 27:34 - Preplaced/manually placed rooms 30:34 - Removing unused doors/models after generation 39:38 - Spawning the player...
Godot 4 Sourcelike Ladder Movement Tutorial | Intuitive Movement & Ladder Boost
Просмотров 1,4 тыс.3 месяца назад
The eighth video of a series where we will build an FPS game. This video shows how to implement sourcelike ladder movement, which takes into account both the player's look direction and directional input to control how they move up and down or side to side on ladders. Ladder scene with the node setup I used (CC0/public domain): github.com/majikayogames/SimpleFPSController/releases/download/tuto...
Interactable Entities & Doors Using Component Nodes In Godot | FPS Controller Tutorial
Просмотров 1,6 тыс.3 месяца назад
The seventh video of a series where we will build an FPS game. This video shows how to implement interactable doors, buttons, and entities using component nodes and signals. Button model (CC0/public domain): github.com/majikayogames/SimpleFPSController/releases/download/tutorial-assets/button.glb Full Playlist: ruclips.net/p/PLbuK0gG93AsHID1DDD1nt4YHcdOmJvWW1 GitHub Repo: github.com/majikayogam...
Character Body to Rigid Body 3D Physics Interaction | Godot 4 Tutorial
Просмотров 4,2 тыс.3 месяца назад
The sixth video of a series where we will build an FPS game. This video shows 2 methods of how to get your CharacterBody3D to affect and push RigidBody3Ds in your scene. Call this function on your CharacterBody3D script directly before move_and_slide(): gist.github.com/majikayogames/cf013c3091e9a313e322889332eca109 Full Playlist: ruclips.net/p/PLbuK0gG93AsHID1DDD1nt4YHcdOmJvWW1 GitHub Repo: git...
Water Movement + Visual Effect | Godot 4 FPS Controller Tutorial
Просмотров 1,7 тыс.3 месяца назад
The fifth video of a series where we will build an FPS game. This video shows how to implement underwater movement as well as provides a visual effect scene you can use for water in your games. WaterMaker3D scene which you can use in your own projects (CC0/public domain): github.com/majikayogames/SimpleFPSController/releases/download/tutorial-assets/WaterMaker3D.zip Full Playlist: ruclips.net/p...
Crouch + Sourcelike Crouch Jump | Godot 4 FPS Controller Tutorial
Просмотров 1,8 тыс.3 месяца назад
The fourth video of a series where we will build an FPS game. This video shows how to implement crouching with a sourcelike crouch jump mechanic for extra air time. *NOTE/CORRECTION:* I realized this after, but it is important that your test_move functions should use the self.global_transform and not the local self.transform. This because the physics server uses all GLOBAL coordinates. This wil...
Smooth Up & Down Stair Handling | Godot 4 FPS Controller Tutorial
Просмотров 7 тыс.3 месяца назад
The third video of a series where we will build an FPS game. This video shows how to implement smooth up & down stair handling. Full Playlist: ruclips.net/p/PLbuK0gG93AsHID1DDD1nt4YHcdOmJvWW1 GitHub Repo: github.com/majikayogames/SimpleFPSController CSGStairMaker3D scene which you can use in your own projects (CC0/public domain): github.com/majikayogames/SimpleFPSController/releases/download/tu...
Noclip For FPS Character Controllers - Godot 4 Tutorial
Просмотров 1,3 тыс.3 месяца назад
The second video of a series where we will build an FPS game. This video shows how to implement a noclip feature. Full Playlist: ruclips.net/p/PLbuK0gG93AsHID1DDD1nt4YHcdOmJvWW1 GitHub Repo: github.com/majikayogames/SimpleFPSController All source code and included assets are licensed under the CC0/public domain license. How Godot's Transform3D Type Works: ruclips.net/video/JKWGYPQ4YG8/видео.htm...
Godot 4 Sourcelike FPS Character Controller Tutorial | Smooth Movement, Bhop, Surf, And More
Просмотров 10 тыс.3 месяца назад
The first video of a series where we will build an FPS game. This video shows how to implement source engine like movement mechanics. STARTER PROJECT: github.com/majikayogames/SimpleFPSController/files/15273600/StarterProject.zip Full Playlist: ruclips.net/p/PLbuK0gG93AsHID1DDD1nt4YHcdOmJvWW1 GitHub Repo: github.com/majikayogames/SimpleFPSController All source code and included assets are licen...
How Godot's Transform3D Type Works
Просмотров 2 тыс.4 месяца назад
This video gives an explanation of Godot's Transform3D and Basis types. It shows how they are actually 3x4 and 3x3 matrices under the hood, and gives an introductory explanation of matrix math. Rotation matrix visualization web demo I used in the video: majikayogames.github.io/rotation matrix visualization.html Godot Transform3D documentation: docs.godotengine.org/en/stable/classes/class_transf...
Procedurally Generated 3D Dungeons
Просмотров 40 тыс.5 месяцев назад
This video describes an algorithm for procedurally generating 3D dungeons with prefab based rooms. You can try the web demos or download the accompanying Godot add-on at the links below. 3D web demo prototype: majikayogames.github.io/dungeon_algorithm/index.html 2D web demo prototype: majikayogames.github.io/dungeon_algorithm/dungeon_rooms_2d/index.html GitHub repo for the Godot addon: github.c...
Easy Realistic Water In Godot Tutorial
Просмотров 11 тыс.5 месяцев назад
This video shows how to easily create a realistic water material with just the default tools and classes provided in Godot. Let me know in the comments if you have any questions :) If this tutorial helped you, consider supporting the channel on Patreon or KoFi: www.patreon.com/MajikayoGames ko-fi.com/majikayogames
Coding Terrain From Scratch
Просмотров 5 тыс.6 месяцев назад
Download the SimpleTerrain addon here: github.com/majikayogames/SimpleTerrain Follow me on Twitter: majikayogames Here's the interactive web demo of the rotation matrix visualization I made for the video: majikayogames.github.io/rotation matrix visualization.html For the demo scene in the video I used the Spatial Gardener addon to add trees and grass to the terrain: github.com/dread...
How I Made Multiplayer Portals In Godot For My Game
Просмотров 4,9 тыс.8 месяцев назад
Project using my portal implementation: github.com/majikayogames/portal_demo Sebastian Lague's portal video: ruclips.net/video/cWpFZbjtSQg/видео.html GitHub override camera projection PR: github.com/godotengine/godot/pull/85529 Godot fork with camera projection override enabled: github.com/V-Sekai/godot/tree/override_projection_4.2 Contents of this video: 0:00 - Basic idea 0:53 - Node setup 1:0...
Handling Walking Up and Down Stairs in Godot
Просмотров 15 тыс.8 месяцев назад
Handling Walking Up and Down Stairs in Godot

Комментарии

  • @TheFainter94
    @TheFainter94 5 часов назад

    i got most of it working great in my game, who i have run into an issue, where if a juggle to fast on stairs or not even fast just move up and down, the camera compleatly miss alings it self, to the point of looking inside walls objects, idk whats happening with it COULD be because my general base player controller is different but idk because the movment works fine only the camera that bugs

  • @Nado_89
    @Nado_89 17 часов назад

    Thank you so so so much

  • @christophereberhart7487
    @christophereberhart7487 День назад

    So this video is already deprecated due to the experimental nature of Godot, rotate_x is no longer a supported method. It is now rotate(), E.G. $Camera3D.rotate(Vector3(1, 0, 0), -event.relative.y * look_sensitivity) would have been nice, if they slowly phased out old methods, instead of dropping them next update lmao

    • @MajikayoGames
      @MajikayoGames День назад

      From what I can tell both are available still? At least in 4.3: docs.godotengine.org/en/stable/classes/class_node3d.html#class-node3d-method-rotate-x

    • @christophereberhart7487
      @christophereberhart7487 День назад

      @@MajikayoGames it throws an error as a null reference

    • @christophereberhart7487
      @christophereberhart7487 День назад

      @@MajikayoGames you know what, I think it's a mistake on my part, because it's not referencing the camera object for some reason. embarrassing.

    • @christophereberhart7487
      @christophereberhart7487 День назад

      Yeah, it was an error on my part, I deeply apologize for any misinformation I may have spread.

    • @MajikayoGames
      @MajikayoGames День назад

      @@christophereberhart7487 no worries everyone makes mistakes.

  • @jomitv2095
    @jomitv2095 3 дня назад

    Hey this tutorial has been exactly what i have been looking for thank you sir, i just have a question. Im porting this to 2D and when you set the expected motion variable to multiply delta by x and z, you say this is a 'forward' motion but I thought that the Z axis is the one which controls back and forth movement and the X is for left or right, can anyone help clarify? I appreciate it

    • @MajikayoGames
      @MajikayoGames 3 дня назад

      Y is up, so i multiply by Vector3(1,0,1) which will set/multiply Y by 0. and leave X and Z the same. just interested in the horizontal move direction, yes as you said, that is X and Z. if this was in 2D, then you could do something like *Vector2(1,0) as you are only interested in horizontal movement, towards the stairs. but horizontal in 2D is only X as there is no Z dimension. you may have to get a bit creative in adapting it but the general concept is to simulate where the player would be, whichever way they are stepping, towards a stair for example, and then shoot a shape cast/body test motion down from slightly above to see if there is some stair there. if it hits and it is not too high of a jump, then you can let them step up.

  • @okie9025
    @okie9025 3 дня назад

    great explanation, and another useful way to understand the basis is to think of it like defining where the xyz axes point to. This is useful if you use a sum of unit vectors to define vectors like you do in math; so eg. (1,2,3) would be 1i + 2j + 3k, where ijk are the xyz axes. The basis actually defines what these ijk vectors mean, so eg. if they aren't scaled nor rotated (in sync with the global coordinate system), then i would be (1,0,0), j would be (0,1,0) and z (0,0,1).

  • @iGodot
    @iGodot 3 дня назад

    Thanks! :)

  • @leoman7787
    @leoman7787 4 дня назад

    how do i turn while jumping with just mouse movement? i dont want to hold strafe keys while doing this

  • @redpz
    @redpz 5 дней назад

    I'm a little confused as to how the air_cap, air_accel and air_move_speed variables are affecting the air strafing. Right now it feels like I can accelerate way too fast and turn way too far without a speed penalty.

  • @sleepinbagz
    @sleepinbagz 6 дней назад

    If you plan to use Stairs inside of a GridMap3D node, you can swap out CSGMesh3D with GridMap or add it as a 3rd check instead like this: and (down_check_result.get_collider().is_class("StaticBody3D") or down_check_result.get_collider().is_class("GridMap") or down_check_result.get_collider().is_class("CSGShape3D"))):

  • @LopkaUna
    @LopkaUna 6 дней назад

    works flawlessly! i also strict height of collision with [if self.global_position.y - get_slide_collision(clsns).get_position(cldrs).y < 0.9:] so i got no issues with walking on little objects

  • @sabertooth9137
    @sabertooth9137 6 дней назад

    Very Geat tutorial. I works very good for me. Also, I have noticed when I try to walk up the stairs while im sided by two walls and face to the wall slightly i will stop moving. If I face staight i will work but being some angles off it will not. Do you know why this is happening and how I could fix it? If you dont no problem. And thank you for the tutorial it realy helped me.

    • @endlux3094
      @endlux3094 15 часов назад

      Its because the code spawns the raycast basically at the spot where you would collide if you walk ahead at a higher level to calculate the step height. In your case you collide with the walls before the stairs - spawning the raycast in there and not allowing you to go further because the step height is at its limit. Got the same problem no idea on how to solve it though XD.

    • @sabertooth9137
      @sabertooth9137 11 часов назад

      @@endlux3094 I see. So based on that I will try and find a way to fix that. If I do, I will inform you. Thanks for the answer. 🤝

    • @endlux3094
      @endlux3094 5 часов назад

      @@sabertooth9137 I played around a bit and i think i might have something that works now. It still isnt that great if you walk in a large angle towards a wall (as in 45 degrees for example) but at least its something. Try it if you want - its basically just making more test moves at angles if the collision happens at an unexpected height if (self.test_move(step_pos_with_clearance, Vector3(0,-MAX_STEP_HEIGHT*1.3,0), down_check_result) and (down_check_result.get_collider().is_class("StaticBody3D") or down_check_result.get_collider().is_class("CSGShape3D"))): if down_check_result.get_position().y > step_pos_with_clearance.origin.y: var raycast_left_pos = self.global_transform.translated(expected_move_motion.rotated(Vector3(0, 1, 0), deg_to_rad(20)) + Vector3(0, MAX_STEP_HEIGHT * 1.3, 0)) self.test_move(raycast_left_pos, Vector3(0,-MAX_STEP_HEIGHT*1.3,0), down_check_result) if down_check_result.get_position().y > step_pos_with_clearance.origin.y: var raycast_right_pos = self.global_transform.translated(expected_move_motion.rotated(Vector3(0, 1, 0), deg_to_rad(-20)) + Vector3(0, MAX_STEP_HEIGHT * 1.3, 0)) self.test_move(raycast_right_pos, Vector3(0,-MAX_STEP_HEIGHT*1.3,0), down_check_result) var step_height = ((step_pos_with_clearance.origin + down_check_result.get_travel()) - self.global_position).y (gotta change the clearance amount if you want to have Max_step x 2)

  • @skerra
    @skerra 8 дней назад

    I want to limit the players bhop speed but keep the speed in air uncapped so surfing etc isn't effected. The player should still be able to exceed the max speed cap in air through strafing but be set back to the threshold after touching the ground. Tried to implement it myself but it felt unsmooth as the change in speed was really noticeable. Dont want the player to go to fast.

  • @Orgazmaat
    @Orgazmaat 11 дней назад

    Hi . Could this addon have feature optionally creation: 1 generate rooms without connections to main net? 2 generate main net within designated 3D area (sphere or similar shape) 3 generate hidden corridors and rooms I want to make some kind of Asteroid Base and have some empty space cells outside the main body of the asteroid formation. And inspect asteroid from outside and like "it could be secret room somewhere in this area" and when dig my way (dynamically geo-modification) to it to have some loot.

  • @Extner4
    @Extner4 13 дней назад

    super clear explanation, best one I've seen so far!

  • @kikioffe2698
    @kikioffe2698 14 дней назад

    i was using your tutorial to help with the stairs. i saw the _physics_proccess function and from fear that my code was missing something important i got into writing it down. Well my stupid but realized that this function is the exact same as the one i already have. Always preread before typing it down ig

  • @Nope-ity-nope-nope
    @Nope-ity-nope-nope 14 дней назад

    This is a similar method to what I'm working on. Any progress?

  • @_PiCode
    @_PiCode 15 дней назад

    Thanks for this. I used it for the GMTK game jam.

  • @Ver2ion
    @Ver2ion 17 дней назад

    im trying to get this code to stop working if the player is above or on top of the object because if i stand on an object they will start to get impulses until the object like explodes and i go flying off of it lol UPDATE: put this after push_dir for more better accurate results without glitches and launching in the air if abs(push_dir.y) > 0.1: # Adjust this threshold if needed continue

  • @darthsackboy
    @darthsackboy 18 дней назад

    major issue with the non-jolt physics here: landing on top of the beginning edge of a prop gives the player's velocity as a torque on said prop because the character is stepping up with its horizontal speed unchanged. It's pretty easy to move heavy af objects using this method. I kind of want to keep it, but it goes away with any hitbox with a flat bottom, so I may just give up and use a cylinder hitbox.

  • @darthsackboy
    @darthsackboy 18 дней назад

    I noticed an issue the other day when implementing this: uncrouching in tight spaces does NOT retain crouch speed. I'm commenting this without actually knowing a solution, gonna look for it now.

    • @darthsackboy
      @darthsackboy 18 дней назад

      fixed it by replacing a key pressed check with the is_crouched variable

  • @Go_Coup
    @Go_Coup 18 дней назад

    If I wanted to make strafing and back-stepping at two different speeds than the forward movement, what would be your method to change the code? I did it my own way, but I don't believe it's anywhere near the ideal method (I changed the accel, decel, and speed values based on the inputs in the get_move_speed function. I also have a walk variable, making the code lengthy with 12 elif statements.) On the bright side, the way I did it allows for a highly refined movement system (I thought changing the friction would be redundant, but I'm thinking about changing the jump height.)

  • @danielruiz5252
    @danielruiz5252 20 дней назад

    High quality content. Thanks

  • @thekingcrow7591
    @thekingcrow7591 21 день назад

    This gave me a lot of inspiration, I'm using a very different algorithm for procedural generation with UE5. However, the verticality is amazing, and I really want to make it a part of my design one way or another.

  • @maximumoverdrive3092
    @maximumoverdrive3092 21 день назад

    you said the word "prefab" . I wonder do you have a background in architecture or construction?

    • @MajikayoGames
      @MajikayoGames 21 день назад

      mostly just game and web dev :) i was thinking of unity's 'prefabs' similar to how godot uses 'scenes' for everything.

  • @darthsackboy
    @darthsackboy 21 день назад

    I've noticed two issues for devs wanting specifically good controller support. The controller look is the easiest to fix, just make sure that the turn direction is always the same as input. This is the specific changes I made to the code: - - - - - - - - var target_look = Input.get_vector("look_left", "look_right", "look_up", "look_down") # set _cur_controller_look in target_look's basis var _cur_look_at_target = target_look.normalized() * target_look.normalized().dot(_cur_controller_look) if target_look.length() < _cur_look_at_target.length(): _cur_controller_look = target_look else: _cur_controller_look = _cur_look_at_target.lerp(target_look, controller_aim_accel*delta) - - - - - - - - The first line takes away the normalized function call for target_look to allow for slight turns with the stick. The _cur_look_at_target is the component of _cur_controller_lool that is in the direction of the player's stick aim. I may have not done this in the best way, but it works nonetheless. The if statement is only changed by using _cur_look_at_target instead of _cur_controller_look for the comparison and lerp call. All this change does is ensure that the aim is always in the right direction, making tight and micro aim more consistent and less laggy. As for the controller move, the first change I made in _physics_process(delta) was similar to the look change in that I removed the normalized call, but I also added an if statement to make sure that the input is normalized when above a length of 1 to keep keyboard input the same: - - - - - - - - var input_dir = Input.get_vector("move_left", "move_right", "move_forward", "move_backward") if input_dir.length() > 1: input_dir = input_dir.normalized() - - - - - - - - As for the actual physics, I found that the grounded movement was the only actually problematic code, and it took me a while to figure out what felt best. First, the speed cap needed to be scaled to move input, but the input ended up having worse deadzones than before. What ended up being the issue there was the ground_decel variable, specifically when used to calculate the control then drop then new_speed variables. What I ultimately did was just remove the variable when there is movement input. Sounds bad, but it ultimately gets replaced with self.velocity.length(), so it works as intended at higher velocity while still stopping the player on a dime when letting go of move input. Here's the specific code I changed in _handle_ground_physics(delta): - - - - - - - - var add_speed_til_cap = (get_move_speed() * wish_dir.length()) - cur_speed_in_wish_dir . . . var new_ground_decel := 0.0 if wish_dir.length() <= 0: new_ground_decel = ground_decel var control = max(self.velocity.length(), new_ground_decel) - - - - - - - - It really isn't the most elegant solution, but I just wanted a quick and effective one for my needs. All these changes makes the controller input feel like it was actually built to work with controller. p.s. I also found an issue with the stair step functionality in a later video where the controller will stop on stairs that run up along a ledge or even if it has a railing as if the check is happening above that ledge/railing, but I haven't looked into a solution ,yet, nor whether you already fixed it in a comment.

  • @junkeyz
    @junkeyz 23 дня назад

    9:47 the acronym you were looking for was constructive solid geometry ;)

  • @Imirui
    @Imirui 23 дня назад

    How would I go about removing b-hopping if I didn't want my game to have it?

    • @MajikayoGames
      @MajikayoGames 23 дня назад

      I think it's kind of hard to remove completely and keep source style movement. You can try things like increasing friction, and decreasing the air_accel and other air movement variables to help prevent movement exploits like bhop. For a more simple version, I'd recommend LegionGames FPS tutorial and take the air movement code from there which is much simpler and should help prevent bhop.

  • @Imirui
    @Imirui 24 дня назад

    since this is an FPS tutorial series, will there ever be a weapon system, or will it just be movement related?

  • @Iyad-i3j
    @Iyad-i3j 26 дней назад

    Is there any way for me to directly copy and paste all the code because it’s taking me way to long to write it down

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

      the github link in the description has the completed project

    • @Iyad-i3j
      @Iyad-i3j 25 дней назад

      @@MajikayoGames thx and your amazing at what u do btw

  • @JuJuR
    @JuJuR 27 дней назад

    I’m guessing it would work the same for 3rd person?

  • @empMerp
    @empMerp 28 дней назад

    Great tutorial, The only problem I have is when ever I land after surfing or run into a wall while bhoping my character gets stuck in MOTION_MODE_FALLING.

    • @empMerp
      @empMerp 27 дней назад

      nvm just a very small typo

  • @nvvv_
    @nvvv_ 28 дней назад

    39:45 I know you have updated tutorials but it seems like this is still your solution. Since I don't need full on surfing in my project, I'm gonna omit this. Definitely find a new solution if you can though, I can easily imagine a bug that gets you stuck in floating mode. Look up the Red Letter Day skip in Half-Life 2 if you want to understand why this can be a SMALL issue. Fast Edit: It's not explicitly Red Letter Day I guess. Watch a Half-Life 2 speed run, it's very early on. You're looking for them to jump off a roof onto a street that should definitely kill the player, and then they'll rub up against a car for a little bit. Then something MAGICAL happens.

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

    I was stuck on this for ages, the main reason was the tonemap and the viewport size. Your method of reversing the transform was so much better than mine, i was using a node3d to track the players position local to the portal but did not work out so great. Unfortunately while this looks amazing in flat 3d, in vr the shader is ran twice in one frame causing a weird duplicate effect, i am yet to figure out a solution but this is amazing work keep it up

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

    wish_dir = self.global_tranform.basis * Vector3(-input_dir.x, 0., -input_dir.y)

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

    I've been having an issue where godot does not recognise the the function get_move_speed() , despite it being used in the advanced movement + friction section of the video, do you know why this could be happening and do you have any advice that could help? Thanks

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

      Also thanks a lot for this tutorial! its very informative and its helped me understand how movement and physics work in this engine, despite the one hiccup ive had (which is probs my fault lol) everything ive interpreted from the video has worked flawlessly

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

    This video is an answer to my prayers. 🙏 Thank you.

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

    This is easily the best first person character controller tutorial for godot on RUclips, seriously! You have no idea how helpful this was, cheers.

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

    Very interesting!

  • @CrazyGamer-kg7ow
    @CrazyGamer-kg7ow Месяц назад

    Bro can u pls give tutorial on arcade bike and car physics with code 😢 in Godot pls im a beginner and struggling.

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

    An extra version that only contains the important code would be helpful. This way you would have to remove the noclip code etc. in a cumbersome way

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

    If you try to create your own implementation, based on this video you may get weird culling artifacts. The problem is that AABB (bounding box) is incorrect, since the default “box” has no height, because the original plane mesh didn’t have any. To fix the issues you will need to create a new AABB and assign it to the “custom_aabb” property of each of the meshes. You can simply copy the default AABB, but set the vertical (Y) size to the max possible height, of the terrain that you are generating.

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

    The SeparationRayShape3D solution has sounded preposterous to me for a long time, but... recently I noticed that Thief has used this method (well, 99% similar), and it actually never really bothered people much. There are of course a few issues, but it's not as bad as I thought, and for some games it's not really a problem at all. For example, I'm considering using it for horror games that don't require much ground precision. I just need to learn how to make it stick to the floor when climbing down steps, as well as how to smooth the camera. This method actually has a couple of upsides: it's simple (I think), and it prevents climbing on wall baseboards, and things of that nature. If I had a dollar for every time I had to create clip brushes in maps I made to prevent players from inadvertently climbing onto such things...

  • @neverland-r1e
    @neverland-r1e Месяц назад

    wow it is so good

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

    Amazing tutorial! I didn't even consider Shapecasts or using signals for the components! Personally, I made InteractableComponent inherit Area3D so I can choose a custom hitbox for the interact zone which doesn't have to be the object's solid collision (small items on the ground may have no collision but large interact zones).

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

    thanks loved learning this!

  • @j.o.t.u.n.n
    @j.o.t.u.n.n Месяц назад

    I'm looking to have one size room that's open no walls with stuff in them, put together to make one big endless room but two floors. If I could use you add on that would be great but what should I be looking for to learn how to do this.

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

    Thanks, this worked great and was exactly what I needed. No other good answers for this that I could find.

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

    trash!

  • @user-oy4hk9yr3n
    @user-oy4hk9yr3n Месяц назад

    how would you go about placing interactable doors between rooms? again great work

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

    Great tutorial! Thank you! It helped me a lot. Only left to fix animation issues due to my 3d person controller