#blueprint
1 messages · Page 309 of 1
Oh there’s going to be different angles?
Yeah
Honestly at this point I'm so confused I'm not even sure what I'm saying is right anymore.
Can you tell me what I could show you to explain what I mean?
I understand what you’re trying to do
Even better
You could probably make use of DOT product but I can’t tell you the exact math. You could try #game-math tho, there be geniuses
oh, game math
why is this not in my channel list???
discord!
thank you very much 🙏
Am I doing something wrong? I used to be able to plant but now somehow I no longer see anywhere this particular plant
(the function always comes here) I debugged it via breakpoints & it should work cause all this is gettin executed
This is how it looks on the other side
this used to work just fine for a lone time btw, now no plant appears or spawns
FTarrionFloatingTextEntry&
May I know what this type derived from? Also what does ::MakeText do?
Does it just paint Text every frame?
also another question, does the function scales the text size based on distance?
Sorry to bother you 🙏
It's just a struct with a bunch of data. And yes that's what MakeStruct does. Widgets do this internally more or less as well, but the benefit here is the bypass of all of that structure around them that costs a lot extra.
You'd need to scale the text yourself though.
Also that code I gave you earlier is slightly faulty. Was from an older project. Make sure to divide your screen location you get from FSceneView::ProjectWorldToScreen by UWidgetLayoutLibrary::GetViewportScale()
USTRUCT()
struct FTarrionFloatingTextEntry
{
GENERATED_BODY()
public:
FTarrionFloatingTextEntry(){}
FTarrionFloatingTextEntry(FTarrionFloatingTextRegistrationData InRegistrationData, float CurrentGameTime, FVector2D InTextDisplaySize)
{
WorldDrawLocation = InRegistrationData.WorldDrawLocation;
//ScreenSpaceAnchor = InRegistrationData.ScreenSpaceAnchor;
ScreenSpaceOffset = InRegistrationData.ScreenSpaceOffset;
Velocity = InRegistrationData.Velocity;
DisplayText = InRegistrationData.DisplayText;
FontInfo = InRegistrationData.FontInfo;
GameTimeAdded = CurrentGameTime;
Duration = InRegistrationData.Duration;
TextDisplaySize = InTextDisplaySize;
IconBrush = InRegistrationData.IconBrush;
}
UPROPERTY()
FVector WorldDrawLocation = FVector::ZeroVector;
/*UPROPERTY()
FVector2D ScreenSpaceAnchor = FVector2D(0.5f);*/
UPROPERTY()
FVector2D ScreenSpaceOffset = FVector2D(0.f);
UPROPERTY()
FVector Velocity = FVector::ZeroVector;
UPROPERTY()
FText DisplayText;
UPROPERTY()
FSlateFontInfo FontInfo;
UPROPERTY()
FVector2D TextDisplaySize = FVector2D(0.f);
UPROPERTY()
float GameTimeAdded = 0.f;
UPROPERTY()
float Duration = 0.f;
UPROPERTY()
FSlateBrush IconBrush;
};```
Thanks
I want the typeface to change when I change the language in ue5. how can I do it?
Is it possible to use landscape physycal material output with auto material?
I haven't fully watched this, but it seems like it goes over all the fun stuff with fonts including handling languages/cultures.
I've been trying to make use of Data Registry, but there's little documentation as to how to access a data table row, any help or info would be appreciated.
I was successful in getting Registry Type and Item Name to show valid options, but I'm clueless about how to move forward.
Enhanced Input Action Values not correctly showing in other classes
apart from Player Character
It should be able to appear in any actor's Event Graph. If you're not able to pull them up, you could be trying to put it into a function.
it is appearing
it doesnt give right value thats what i am saying
it always returns 0, 0 for X and Y
in other classes
use the one that is selected not the other one
The value won't be correct unless input is enabled on the actor or it's a pawn that's possessed by the player controller.
why does radial damage take actor's hitboxes into account?
I had capsules that doesn't even block visibility and radial dmg counted and went ahead and damaged it
hi all, i am coding a pickup system. sack_bp's mesh's physics is enabled , and when key is pressed, the mesh's physics is disabled on runtime and sack_bp is attached. But it does not attach the actor when mesh's physics is enabled on engine. If I disable it, the code works. any suggestions?
here is my code
as I said, it works when I disable physics on engine
I am sure that on runtime set simulate physics is working
Use breakpoints and then check where it fails
Hi, I am using the editor to apply spline in my UE 5.3 project, and every time I restart the engine, it resets. Is there a way to fix this? Thanks in advance! 😄
like how the spline is changed by you in the level or in the actor.
try modify it inside actor then it will not reset.
If you are using world partition and the spline is in world then this problem is a bug in engine
is it a bad idea to call asyncloadasset everytime on a soft pointer without first checking if its loaded first?
no issue on my end soo far.
it should just go to completed pin right away if the soft ptr already resolved/loaded.
The common mistake with this is that your actor has a Scene component root and then a mesh attached to it.
This causes your to simulate physics on the mesh that detatches it from it's own root. Then you stop simulating physics on the mesh. But it was never reattached to it's own root. Then you attach the root to something expecting the mesh to be attached as well.
@maiden wadi Thank you soo much for the code btw.. I got something to start with but currently updating to new engine.
Managed to make the floating text where I want it + offsets.
I tried to make one master widget so I dont have to call native paint of every single FloatingText Widget
failed on that part =(.
so I moved the native paint back to every single floating text widget. Do you think that cost too much performance?
i know i should profile, but maybe someone with your experience knows if it's a valid approach or not.
I do this in one userwidget. I have that one "Canvas" as I call it and one subsystem. I add the canvas to my HUD widget. Game code registers to the subsystem and the subsystem manages the lerping of placement and possibly removal of old elements, and the widget simply reads the subsystem and paints.
sounds like refactoring is needed on my end 😵
I don't fully understand how the K2Node_LoadAsset works but from what I can tell I don't think it calls the completed right away if it's already loaded as it gets added to a queue. Until the load request gets updated, it wouldn't know its already loaded as there's nothing in the actual node that checks if it's already loaded before hand.
Having said that, I don't think it'll be an issue in most cases.
Am I understanding the AttachActorToComponent wrong ? Why is my character mainting it's yaw and not snapping to the boxes rotation ? The sleeping position is always perpendicular to the starting position.
Depending how the character is setup, it's yaw could be based on the control rotation. You would most likely need to disable this before you attach and the re-enable when you detach.
Thanks! It worked
hi! so in my level blueprint, i want to get my variables from my movement blueprint, and connect it to the end of my cutscene. but its giving these errors and im not sure why. anyone know how to fix?
Connect the cast. The errors are telling you that self(which is your level blueprint) is not your character.
hmm, so i move "As BP FPMovment Player into the two variables?
To their Target pin, yes. you want the Target to be the character, not the level blueprint.
that worked, thank u!
Hello, I have a little functional issue. When i call a dispatch event (OnDeath) which destroy the actor itself.
I notice that The actor start the even : received damage. > receivedDamage function
Get damage, and notice he is dead, so it launch the onDeath event...
But after my receivedDamage function i have a list of action to perform... but the actor is destroy... but actions are trying to be completed... which make an error because the self doesn't exist anymore... but if it doesn't exist anymore why i enter into that case 😄
does it mean that i have to make a validity check everywhere to see if my "self" is still valid?
that will mean i need to put a isValid everywhere... if an event doesn't stop when the actor is destroy
and that will be really strange... because the actor could be destroy at any point of the event step
I'm struggling to follow the series of events and whats being called from where.
so ReceiveDamage is called, and it called ReceiveDamage of the component
the component check if he is dead or not
if yes
the component trigger an On Death
so when it dies
i call the OnDeath --> destroy actor
but the death occurs here
so just after the death, it try to execute the next function (Set Life Bar), but the actor is destroyed...
so is it normal that it continues the process even if it's destroy?
Still on the bed trying to reset the control rotation back to normal, for some reason the code works for the server but not for the client. The camera is offseted on the client for some reason, I've tried for the past half an hour but I am getting no where.
yes, because when you destroy an actor, it just tells the engine to remove it from the world so it's not rendered and then marks it for GC. Until it gets GC'd the actor still exists and can run logic. UE does have some things to tell you when this is happening though, like the pending kill messages.
Hey, probably really simple question, but I have no idea how to do it. When you hit the death border below the map, it obviously kills the player. How do I get a widget to appear on screen after this? I get how to do it when the actor is destroyed by damage or something like that, but not with the existing border
nevermind, I have found a way around it, but even still, if people could answer for future reference that would be fantastic
hi i have a question:
I have 277 static meshes (an accurate skeleton model)
parented to a scene component (so i can move and rotate them).
Now i want to get the location of each of these meshes but i get 000 and 009 (world).
Any idea?
ok, but do we manage that? don't tell me that we have to check the actor is valid all the time before each function call?
show image what are you doing
i want to get location of the meshes parented to the root
but it does not work
what blueprint you wrote
that is because they all will have same location in the scene check them they will have same location
From where you imported the model. if it is from blender there is one secrete option you will need to enable to import the original position
what secret option in blender do i need to enable my friend?
@atomic hollow i need the secret please!
enable all the blender options and the one i checked int the unreal one disable that
im going to try, thanks my friend!
I believe you can do an is valid check on the AC monster Stats after the recieved damage. That way you only continue if it's still valid.
i am in unreal 5.5 they changed the import window. there is no transform vertex to absolute option
it is in advanced option from top
in unreal 5.5 there is no advanced option from top
share import window image
after that what is could you send that
and why they change the system
Hi all, I'm creating a game where the player is able to possess the enemies when they get them low on health. The issue I'm having is that because the enemies are all children of a parent actor, and so too is the main character, when any enemy dies, even if not controlled, the game over widget is appearing. Unfortunately, I am unable to change the fact that they are all children of an actor, and I'm looking for a way for it to appear only when the player controls the actor that dies. I assume it would be possible with a branch and a boolean variable, checking what actor is currently being controlled by the player controller, but I don't know how to do it
player controller has a method: get controlled pawn and one for character, too, iirc.
when using add world offset, is there a way to make it stop if it collides with something? it seems like it has no collision, all my enemies just overlap eachother and ignore collision
thank you
https://blueprintue.com/blueprint/v6a_rnpe/
thats the movement code, thats my collision stuff, it doesnt fire when enemies overlap
thats the collision settings
@dark drum @frosty heron I don't recall which of you I might have been mentioning it to, maybe both at the time or someone else. But I decided to run a test on that ref vs copy thing in BP. Context was that someone had told me that refs were copies in BP anyhow which just automagically get .
Initialliy I'm not surprised because it's what I would have originally expected. But I'm more confused after this test because I would have expected refs to be the same speed if they were correct and I generally trust their input. But there is a significant speed difference in passing a ref or value to a function. About twice the time on a copy vs a ref on a mid sized struct.
so this is my code as of current, for taking damage. I know I'm missing something in that second screenshot, mainly because the 'Is Player Controlled' will always trigger true and so if I plug it into the branch, it will always trigger still. I need a way of getting the actor that is taking damage and checking if it's the controlled pawn. I'm aware I can use Equal, but the way that my actor is taking damage is just through the any damage node, so it applies to itself. In this case, would it be better to do it in the projectile blueprint? (Where the damage is applied)
I fixed it, attaching and detaching was the problem for some reason now I just set the location and rotation manually
just do what here said on forum.
But if he received damage form another way when I’m still busy on it it will not resolved the issue except if I put an is valid before each function… check. That will make the code weird
what are these namespaces for? Never used them once
I can't remember saying about by ref or copy but your results line up with what I would have expected. Good to know the difference.
I'd imagine the difference would be bigger if you're using large structures as well. You know, in case you wanted to do another test. 😅
You generally want to ensure your references are valid before using them, especially if you know that at the point in time that you're trying to access them that they could be invalid.
In C++ land validity checks are all over the place with references, because if they are invalid, the whole thing crashes.
In terms of better structure. I would being using event dispatchers for when the health is updated. The widget would then just bind to the event dispatcher.
Another option is to have a return value on your damage function.
So the validity check is done every I guess. But it’s more friendly in c++. In blueprint it make the code very long.
I think I will not destroy my actor but put a logic that will make them invisible or something like that. Until I found a better solution to manage that situation
Hey
i got a collisionbox on both sides of the screen, how can i make it not push the player 2
so player 2 blocks it
its a "screen limmiter" so u cant run outside
but it pushes the other player along
Prevent the players from moving in the particular direction when a player collides with one of your walls.
I wouldn't know, but it's a potential solution. You want your players to not be able to move away from that particular wall when another player is colliding with it.
well yeah kinda
hey all, still looking for a response to this if possible. Thanks
I think there may be bigger issues with this setup, namely if your screen resolution/viewport size changes, then your walls may not be in the right place.
Probably better way is to use the camera center location and adding and subtracting a certain amount to X and Y and this is your Min/Max distances away from camera center that any player should be. This can easily take the viewport size into account as well. Once you have the min/max, you can then determine if the player's position is < the max or > min and only allow their movement on that axis if so.
yeah i mean i have a camera that calcualtes the distance between and zooms in/out with a clamp value, but its when its at max i want to lock them, how owuld i diable movement in that axis tho ?
Don't accept their movement input.
hmm true
however
this will be a problem tho to calculate the max distance between them when my camera is using an "isometric view"... abit angeld
sinze the distance close to the bottom will be less then on the top
Well, it's easy enough for one axis. The other axis I think you could use a map range node. Depending on how high on the vertical axis the player is, the wider the acceptable distance is.
hm
Not really, you can also convert a getter to validation get.
Also a silent error is very very bad.
This is happening as you're basically asking the player controller if their possessed pawn is locally controlled which would always be the case. If the second image is the code that is immediately following the first image, all you should need to do is check the controller of this pawn is possessed by the player controller by checking if GetController == GetPlayerController 0 or you can do the GetActorOfClass (PlayerController).
yes i mean to put them on a place where they are not visible and accessible anymore and then delete them
instead of deleting them on the frame
i can foreseen to do it later
thank you for the response, I have set it up in the blueprint but it still does not seem to trigger
You'll probably want to move the Destroy Actor to the "False" on that branch and you may want to move the "Game Over" widget creation over to the player controller itself and call it from there then call the destroy actor.
Sorry, how would I go about doing this? How do I get the death of the player from the player controller, before calling to destroy actor
Put "Destroy Actor" on your False off the branch.
Make an event or function in your PlayerController and move the create widget/add widget to view port into that event or function.
On the True of that branch, call that newly created function/event and then call the Destroy Actor.
Basically you don't want to call Destroy Actor before the actor is done all of the logic it needs to do. You want it to tell the PlayerController to display the GameOver, and then the actor can destroy itself.
Thank you, this is working perfectly.
and thank you for explaining why, it really helped me to understand how it actually works other than just and now it works
im trying to do a timer, so it reads 00:01, but i currently just get 0:1 if i do integers; whats the best way to do that im trying to get?
The ToText (integer) node has a little drop down arrow on it. Set the minimum integral digits to 2.
Use Format Text rather than an append and strings here.
With format text you can insert {variables} into the format and it gives you pins to insert values.
Then when you want the value from the integers, use the ToText and feed it into the formattext node.
So your format could be something like "You survived {minutes}:{seconds}" and you'll then have 2 named pins you can plug your integers into.
Bonus: because its text, it can be localized 🙂
hey folks, asking on behalf of a friend: has anybody ever noticed the Get Instanced Struct Value and Make Instanced Struct nodes disappear from blueprint graphs after saving, closing, and opening again? they've used these nodes before without issue in other projects, but they consistently disappear. no errors on saving or loading the project or the blueprint. Unreal 5.4
I'm checking with them now to see if the problem persists between multiple blueprints
hmm i cant get my player 2 controller to work at all. (locally) im on 5.3 anyone have any tips ?
did you ever fix this problem? it's happening in 5.4 to a friend of mine. consistent across multiple blueprints
@hollow pond does the project use cpp?
not sure but I believe it does
i think it can happen when your code messes up loading order of stuff, e.g. having hard references in code...
load order issue seems to be the problem, but I don't know enough to offer a fix to them yet
can someone tell me how to set the specific variables in a map in blueprint real quick? the only option i'm getting is to replace the entire map
if you try to add a key-value pair to a map, and the key already exists, then the key-value pair that is in the map will be updated
ah you said keys and i facepalmed, i searched keys instead of set or get and i found it
thank you
no worries
bit frazzled myself so I'm glad you got it before I had to open unreal again lol
haha yeah always a pain to learn new ui, this is why i like to stick with c++ but im realizing blueprint is just too good for visualizing and one off logic
Iirc the problem was that the struct was from a different module and the module loaded after the BP loaded that the node was in. So the node failed and removed itself
riiiight, that might be it. maybe the struct is from cpp. I'll check
I've followed this tutorial to implement a basic painting mechanic in my project: https://www.kodeco.com/5246-unreal-engine-4-tutorial-painting-with-render-targets . Is there a way to change this implementation so that the canvas can have a proper texture instead of just a solid color? Thanks!
Isnt there a way to extend the Movement ? I need to update the position of another actor only when the current character is moving...
There should be something like On Character Move? Or even On Character Start Move?
Or should i extend the CMC tick event in C++ ?
What a pain 😣
Did you try the isMovingOnGround?
thats a bool, i thought more like an event that i could extend / override?
You could check that bool on a timer or on tick. Dunno if there’s an event
yeah though that would force all my characters to tick even when they dont need it
sounds a bit like a cope 😵💫
the bool isMovingOnGround is always true
even when the character is not moving
though there's the Get Velocity, that seems to work
Sometimes it's the little things, thank you for pointing me in the right direction! The answer in the end was just projecting the vector from a saved rotation. It's not ready yet because I have to find at what point the values need to be inverted but the core of the math was this, no C++ needed.
wtf is a cope in gamedev 😀
You’re looking for solutions, you have some options lol
If it’s always true tho obv that won’t work hehe
Ooh what does that cross node do?
Finds the right vector from our up and forward vector!
I'm kind of baffled that I just know that now
yeah, cross product. Gets the perpendicular vector between two vectors
I mean, same , I never used it
Ah-ha, I see Adriel came in to the rescue
Actual rocket scientist that one 😀
Incredibly grateful for that awesome idea, honestly
does anyone know if theirs a way to call blueprint code from the editory without being in game?
Bruhtilities
bruh what
blutilities
can u expand just a little please
is that like an extension im not finding it in the editor
google blutilities
Blutilities were renamed Editor Utilities - they still exist in UE5.
damnit am i gunna have to move all my logic into this new graph ;-; i hope i can copy paste, at least theirs something for this
You can also mark events in actors as "Call In Editor" which allows you to run the logic on the actor when its placed in the level. Gives you a button to press when the actor is selected.
that sounds great and im 100% doing that if i cant get this editor utilities thing to work the way i want to thank you. i'd rather not have something in the world that is only their so i can run editor code and tbh begin play would prob work just as well but id have to create an instance. idk hopefully this editory utilities is literally just blueprint but for the editor
just trying to figure out what tf to do for the parent class
Yea that's basically what editor utilities are. You select the asset and run them and it can do whatever ya like.
thats awesome. super excited for the visual data base management this allows for
ty
just for context because that sounds crazy i need to constantly be looking and changing my data as well as referencing stuff so having it layed out in a way where i can organize things in event graph subnodes so everything is compartmentalized and easy to view is amazing.
can i not reference a blueprint data asset in the editor utility blueprint? I can access the c++ parent class fine but when i try searching for the blueprint sub class i cant find it
I feel like i must be being stupid or something
Maybe you are mixing class data assets (what you do in c++ and the blue DA asset) and the instances data assets (the red ones you create from the classes)
ah maybe ill take a look now thank u
theirs no way to make it blue when trying to derive from my c++ data asset class
i figured it out, you need to set it as the default variable from the c++ class that can get assigned.
Hi guys. I'm working on a multiplayer game using GASP-ALS as a template, and I have an ability where a player can possess an NPC. This works fine on the server, obviously. For the clients, it requires an RPC to the server, but in that case, the client player's camera doesn't move automatically to the new pawn, and stays attached to the old pawn.
Is this expected behavior, and if so, is there a node to manually move the camera over in GASP? Or is this just a replication issue?
_ _
If it works fine on server but not on client, it’s very likely
I’d go directly to #multiplayer with this
Will do, thank you for the reply.
Anyone know how to allow widget buttons in a widget attached to an actor to trigger onClick in multiplayer?
My controller has a widget interaction and the widget component on the actor has receive hardware input as true.
When I press the button, I call Release Pointer Key and Press Pointer Key against the input action key that was pressed.
this works fine with one player, however if I run in editor (listen server) with 2 players, it stops working 🤔
It's also worth noting it works fine with Standalone with two players. It's just in editor that it stops working if there is more than one player 🤔
Inputs are always local, as are widgets, so how this may factor in multiplayer is up to what you're doing to make it multiplayer.
Ya, it's just weird that it was having issues only in the editor if there were multiple players, works fine until the 2nd player joins.
That said, I fixed it by setting the virtual user index on the widget interaction component manually based on being a local player, that seems to do the trick.
Might be a side effect of the editor running in single process mode by default
This little node right here has caused me a headache with debugging because Blueprints does NOT debug step into the matching 'RetVal Dynamic Delegate Function Graph Flow' the first time around UNLESS you toggle a Blueprint Break-point right inside the RetVal Function Graph...
...Like, no, if I am debugging my custom function and I have this hooked up as some sort of input, then that input should be stepped into even at the first go-around!
But that's a binding
You want to step into the logic that creates the binding?
Cause the bound method would only trigger if you actually execute the binding
In C++ you could step into the AddXYZ logic that binds the method to the delegate. But the actual method would only be debuggable if it actually gets called
But maybe I'm misunderstanding your problem
Blueprint Runtime Error: "Accessed None trying to read property CallFunc_Array_Get_Item". Node: Set Visibility Graph: EventGraph Function: Execute Ubergraph Main Blueprint: Main? any one help me how to solve this
Accessed None errors indicate you're trying to access a reference variable that doesn't have a value set. In this case, you're getting from an array somewhere (could be happening in the for loop) and the value isn't valid when it's attempting to get it but the error is stemming from a "Set Visibility" node, so this is where the reference being passed in is invalid.
To correct you need to make sure your array doesn't contain invalid items, or you can check the item is valid before attempting to access it.
I'm still a bit confused... where exactly should I add the valid check before setting the visibility?
Immediately in the "loop body". Check that the "Array Element" is valid.
Depends a bit on if you even want invalid entries in that array to begin with.
It's probably still worth adding the IsValid into the For Each Loop Boddy for things that were valid once.
Also, I'm not sure how safe it is to Remove an element from your Array while looping over it.
Yeah, that should resolve the Error you get for now.
let me check thanks
if your Trace doesn't hit anything, you might be adding invalid Components to your Array.
You might want to check if the Trace actually hit something and if the HitComponent is valid, before even adding to the Array.
yeah its work nice thanks again
How do you listen for pixel streaming input/messages from the browser on a particular streamer ID? PixelStreaming2Input's methods don't specify where the input came from.
Go read the #rules you’re crossposting multiple messages
wdym
I'm reading this https://github.com/EpicGamesExt/PixelStreamingInfrastructure/blob/master/Frontend/Docs/Communicating from the Player Page to UE5.md
And it describes how to send data from the frontend to the engine
But it doesn't specify how, in the engine, to figure out which Streamer ID it came from
Can you not send that along with the payload?
I'm using multiple streamer IDs for different views of the world (what I was talking about in #multiplayer)
There has to be a cleaner way to do that
Would it be better to do this in C++?
Not sure, I think this is more about how the whole sending/receiving is setup in the PixelStreaming system.
From what I can see it all boils down to an RTCDataChannel sending the data. Depending on where you receive that you could decide based on that. I don't see it sending any additional identifier atm, but that might be somehow baked into the DataChannel.
But if the event itself doesn't give you anything on UE's end then I would say no.
I just noticed a bunch of stuff like IPixelStreaming2InputHandler that I can't find a reference to in blueprint
I would somewhat expect there to be an InputHandler on the PlayerController.
Which would basically tell you who it is based on which PC it calls in.
It looks almost like the blueprint API is a superficial wrapper
Blueprints are generally superficial wrappers.
fair enough
does any know how to play a youtube video automaticly with web browser without having to click?
I hope this is the right place to ask, but Im following this tutorial and the guy says you need this node, but I can't find it anywhere. It doesnt help that the video doesnt show how he got it, it just cuts and its suddenly there. Where can I find it?
you need to create (or have) the IA_Move asset first.
And how do I do that?
isn't that mentioned in tutorial?
nope
This is my first time working with blueprints or anything of the sort, so also please excuse any incompetence 😅
can you post the tutorial link
Website: https://codewithro.com/
Support me on Patreon: https://www.patreon.com/CodeWithRo
Join my Discord Server: https://discord.gg/gZH4JDpgdT
Donations: https://ko-fi.com/codewithro
Synty Store: https://syntystore.com/CodeWithRo
Ithappy Store: https://ithappystudios.com/?ref=codewithro
Use Code: CODEWITHRO25 to get 25% all Ithappy assets!
Bus...
at about 2:15 he spawns it in
do you have the ThirdPerson folder? you need to create a project with startup content. (or something like that, can't remember it's name
when you create a project, you can choose third person template, choose that and there you will have ThirdPerson folder and it should have IA_Move already.
I started a TopDown project template, since thats what I wanted, but the character moved with the mouse, which I didnt want, thats why Im following this tutorial. Should I just make a new project with that template? Ive practically done nothing yet, so it would only be like 10 extra minutes of work tops
yep, you can also make another project, copy contents over if you want to have both contents.
but make sure assets don't conflict, on second thought, i would say start fresh.
👍 Ill try my best
Its somehow not the same one?? this one has two different green connectors for action value, but the one from the tutorial has one blue connector
wait, this is what the guy in the tutorial does, since he uses the break vector 2d node to break the action value into x and y anyway, can I just hook the make vector node directly to the IA_Move node I have and itll work fine?
I followed the tutorial to the end, but now the camera is at weird angles, the character moves fine. But whenever I start the game, the camera goes to a weird angle
Nevermind, I had something wrong with the PlayerStart object
Hello, I followed this tutorial (https://www.youtube.com/watch?v=g9aJtZURFug) to try a create a moving platform, however I found that when the player jumps on the moving platform, it does not move with it and instead causes the player to fall off, does anyone know how to maybe like conserve momentum when jumping on the platform
In this tutorial, we will be learning how to make and trigger a simple moving platform for your Unreal Engine 5 project using simple techniques. In just a few easy steps, you will have a moving platform in your game. Follow along with step-by-step instructions and you will have your moving platform in no time! UE5 Tutorial, Unreal Engine Tutoria...
Hello, I have a quick question. If I want to have a bit of code or logic run in my level, but without attaching it to anything visible or moving, is an actor still the way to go?
It depends, what sort of logic it is?
I'm generating a procedural mesh at certain points, and doing some operations with it before trashing it
It doesn't need to move or be visible
uObjects might be a good option. Construct one, call the logic and when you've done, wait for GC to destroy it (assuming it's not referenced anywhere).
You just have to be aware that uobject by default don't have any world context so some nodes that require it won't be accessible. If you're just maniuplating data this might not be an issue though.
I would use a subsystem, but i don't think you can if you are just using blueprints
Yes I'll just feed it some transforms through interface, btw what is GC
a subsystem seems over kill for some throw away logic.
Garbage Collection. Also, there shouldn't be any need to use an interface.
what do you mean trashing it, is it for debugging stuff?
I am blueprint ATM, project is c++ but haven't used any yet since I am slowly learning
I just empty the mesh, since I only need it for 1 operation and make a new one when I need it again
It just referring to destroying it.
Oki thank you, I look more into it
we also want to know about this. if you found out then message here
you can use this nodes along with lintrace channel nodes from the camera four corners from screen space to get exact what you want.
Oo
?
that's more likely what he needs
or IgnoreActorWhenMoving
to whom you are saying
BloodBanner, but nvm. he asked two questions
you gave answer to how to calculate where the boxes should be
mine was about not locking the other player in the bounds
i am saying the exact thing if he is good at math
this nodes are very useful
yea, i didn't see the other question before, my bad. sorry
Sleep Well
use any of this nodes that best suit you needs attach the player to the platform when he is on the platform and detach from the platform when you are going on the other platform
Are there any resources explaining how to save/load online data with unreal?
It cannot simply be to create new .sav files and upload/download them, right?
did you just tag me saying you dont know either?
🤣
you probably could
but i guess that's what services like playfab are for?!
well I own a website and I could set up a DB, though I don't see the need for it, since the data isn't that large.
It would be a matter to get/set. I just don't see how it would work or if there are good practices.
i think it's not a good idea to think about it if you have to ask
from a security point of view, etc.
🧙
There aren't any UE specific ones. You can serialize data to SaveGames, write plain text inis and text files or communicate with some backend to upload the data there
What you do with the SaveGames files is up to you but they are usually meant to be used locally fwiw
Hi all, looking for some help fixing this blueprint. I'm sure there's a better way of doing it, but it is supposed to spawn base rooms unless on room 10, or room 5. The issue is, is that it is spawning two rooms on room 5 causing some issues, the boss room and a base room.
@surreal peak @spark steppe
What about cloudsaves? Similar I guess to migrating .sav files? :/
also if you release on steam there's save game cloud sync stuff, too
yeah thought so
I guess I can make do with a download and compare system
.sav locally and .sav on the web, load both, get the data and check.
1.) i wouldn't rely on cloud save only, that's just a backup for the local save game
2.) i wouldn't advice to use your own webserver for that, unless you 100% know what you are doing, how to deal with ddos and other attacks
f*cking up #2 is just too easy
ddos?
also, I am aware the and not's do not need to be there, they was added during a bit of testing and have since been removed
Oh, I do have a service that takes care of that
It's probably worth asking why you even want to do this.
Maybe you are solving the wrong problem
well i want to have in-game purchases, how would you track that otherwise?
I get what you say, but again, any of them streamlined enough?
I have some experience with steam but that is not streamlined at all >.<
What are those purchases?
Is this a multiplayer game?
it's single player but you can buy perks and skins
You usually need to host what a player bought somewhere and identify them uniquely. That requires a database of sorts.
Also keep in mind that Singleplayer games can just be cheated if the game contains the content already
For Singleplayer games it makes more sense to use dlcs I guess
true~
It's very rare that Singleplayer games with in-game purchases make sense
well... i mean.. you ever heard of Genshin Impact?
Yeah but that's not local Singleplayer
Well you log into their account system or not?
ok, yeah, but that's what I mean, the game is local, the save is online
Not sure. Can you play the game offline?
It can totally be that you have some sort of connection to their server to progress story and quests
And maybe even abilities. Which means a character unlocked by cheating would be noticed
well that's why I was under the impression that cloud saves weren't just backups, but rather checks
You'd need to first check what genshin exactly does before assuming you can do the same
If you are unlucky it requires hosting a lot of stuff for a lot of money
well that's why I was asking, it shouldn't be
if you bitshark most online games, the data is tiny.
hmmmm
I wonder if there are multiple save files then
how gamer will buy and trust your in game purchase?
Genshin isn't local. You need to connect to internet to play the game.
Essentially connect to one of their backend
Anything you do locally won't affect your actual data on the cloud.
You can try to manipulate your damage etc, but you won't kill the boss in 1 hit
Probably cause SaveFiles aren't sent to the Server. Just the input is, like it should be with online games.
And the input will change state, which will be saved on the Server's end.
If at all you download the savegame.
And it can be that they keep that somwhat in sync or only send you the difference in some way.
I think its useless to protect any game that doesn't use dedicated server
As long the file is local, anyone can do anything to it and there's nothing you can do
In theory, yes. That's why I would work with DLCs if I want to give them content for money.
Something like Vampire Survivor does.
Small character DLCs for a few bucks
can someone tell me how to fix this? Everytime I interact with the sliders it closes the game because of an infinite loop
lol
even if the game have a dedicated server, the player can even mock the server if the API is simple 
Player shouldn't make any api call them self.
That should be handled by the dedicated server.
Imo anyway. I don't know much about networking stuff.
Protecting data is easy enough. Simply don't let the client tell server what to do / set. Only listen to something that is absolutely required. E.g input
At that point the only way for client to hack the game is to hack the cloud computer
hacking the cloud server is another story, can't do anything about it. I mean if player want to get some in game purchase locally, and they already know how client communicate with server (ex: https call with json), they can even create the server locally to make a purchase. Though the data within the server is not changed, because the request doesn't even reach the server
Well you can't stop people from tampering with local data.
yeah
That's why you can still see skins and mod on genshin
But the key take away is they only do it on their local machine.
So if you are in multiplayer game.
Other people will sees your character for what it truly is.
the server doesn't even know what the player looks like 
Well they do
It will just be what ever you meant to equip
If the cloud says I'm equipping rug cloth, then I'm wearing rug cloth for others.
If i chose to tamper with the file and dress as batman, I will be the only one that sees my self as batman 😿
Sometime i don't understand why some people want to protect single player games
Encrypting single player game is a waste of time imo.
Protection against cheaters should exclusively for online play so others don't feel cheated.
yes, I mean visually, they can mod the asset locally. but if the server know the item id for example, and you don't have any history to obtained that item, server can validate it and mark it ass fraud and won't be valid to other players I guess
Gonna sleep. Nite2
So when I attach an actor to a character with an offset how can I make it so that the location of the attached actor follows the location of the parent without rotating alongside the parent's forward vector ? I know I can set absolute rotation on the attached actor but that doesn't stop its location from still rotating alongside the character it's attached to
Is there a way to spawn a blueprint actor from a blueprint actor?
I want to instance a hallway with doors, Main actor Bp would create the hallway and second Bp would be the doors, so they can open and close Is this possible?
Any reason why you couldn't just set the elements you want to be visible from hidden to not hidden instead? Just throwing a simple solution as I have never seen something like this done using BPs
Of course you can spawn actors from other actors. You're trying to make a procedural hallway generator?
If you want the doors as actors and preset along with the hallway's other parts. Then you should look into something like Prefabricator or similar.
Yes
There are alot of good resources out there for learning how to do procedural generation but make sure you have realistic expectations going into it. It can get pretty complicated, depending on what you want to do with it.
Are you trying to build a whole game on procedural gen or just parts of it like this hallway?
Just parts
The hallway is not what I want but its just a good example to convey what I'm trying to do
Are you using UE5?
It would probably be worth your while then to dig in and learn the PCG that is built into the engine
Unreal Engine 5 Beginner Tutorial! In this UE5 Tutorial we are going to learn about Procedural Content Generation (PCG) plugin. PCG's were introduced in UE5.2. We are going to make a procedural forest using the PCG Plugin in UE5.2.
Patreon ► https://www.patreon.com/pinkpockettv
Instagram ► https://www.instagram.com/pinkpockettv
Discord ...
Im not really making anything "procedural" I guess...
I have a document that gives me the transformation data of assets
And a bp that spawns them as a hism
What are you doing then? I thought you were trying to spawn a hallway automatically or randomly
Im spawning a building dynamically
I want to know if in the bp actor
I can dynamic spawn in doors
That work
Sure. But you would need to build the door actor to function the way you want to. And is the building an actor or a mesh?
An actor
It spawns the meshes as a hism
Long story short
I have very large and complicated building assets
That are a pain the behind to rebuild in unreal
And I have a bp actor that can spawn everything in as a hism
I want to have bp "templates"
Like a door
That the main spawner can spawn them in their spaces
Ok. So if this actor is already spawning things in at the correct locations, just make a door actor base and use whichever door meshes you want. Make that door actor function as you want it to and then wherever your spawning actor is already spawning in door meshes, Spawn Actor Of Class at that location, using your door actor instead of the default door meshes.
Hello
Int/Int Division is always returning 0, even when it clearly shouldn't. Why?
I print both ints, and they print correct values, let's say 7 and 8, and then print their division, which no matter the previous values, is always 0. How can this be?
As an FYI, there's overhead for creating HISM's so if you're only having a single HISM component have a 1 or two instances, this can have the opposite effect.
If you're using HISM's generally, you'd have some sort of manager actor for them where all instances of a given mesh would be added to the relevant component so you don't have hundreds of HISM components for the same mesh type.
The output was an int, so it could only be a whole number, that's why 0.
Solved.
Its set up to make the hism component in bp, get the names of the meshes from a document, it sets them dynamically and spawns them.
The bp itself has no components
Does it create a new HISM component for each mesh or does it add an instance?
Yes. SpawnActorOfClass
Give me a minute i don't remember off hand
It creates an hism per asset and adds it to an array
Wall(×16)
Floor(×4)
Ceiling(x4)
For each asset in the document
Does it then add an instance for each location the asset should be placed?
So what you can do, when an HISM is created for a door, store a ref to it. Then on begin play, get all the transforms and use the spawn actor of class node to spawn a door actor using the transform you get from the HISM. When done, you can destroy the HISM used for the doors.
You can't spawn actors in the construction script but you can on begin play. 🙂
Ouch..
You say that but imagine an actor that spawns a version of itself on construction script, the new actor then does the same thing and so on. Before you know it, you've just bricked you're level. 😅
You could technically use a child actor component, but these can be pretty buggy and come with limitations.
Yeah.. that makes sense hehe
I guess I gotta keep it all in house and make a "master" bp actor
A master BP for what?
instead of having it spawn other "template" Bp actors , "doors," I would have to create it all the door functionality in itself
guys do you have some kind of documentation or ierarchy of how to use classes like Gamemode/Player Controller/Camera Manager/Pawns etc? I think these are fundamentals that i am missing,i havent understood them properly or when should i code inside them. Thanks!

Okay so my character's control rig is set so that the spine is directed towards a target however the aim animation is makes the hands and head look at left which doesn't match my control's rig logic which assumes aiming is done straight. I don't wanna tune the control rig for the animation since a spine should technically look a target. What should I do here? I'm assuming this is common.
escape to cancel • enter to save
Image
If I tune the control rig just for this animation it will mess up the other animations
Does anyone know any good tutorials for adding attacks in games? Im making a top-down game, and I want some attacks where the wizard shoots out projectiles, anyone know any good tutorials for that?
The following pages will explain some of the most Common Classes in Unreal Engine's "Gameplay Framework". It will also provide small examples of how these classes would be used.
haha Tony my man, thank you!
❤️
Does anyone here know if subsystems are a c++ only kind of thing? I'm finding very little information about how to even use a subsystem in unreal engine and nothing related to blueprint
You can create them only in C++
DAMN
If you have no ability to use C++, you can try to achieve similar goals using an actor component on let's say a game mode or game state. It depends on what you're trying to do
It's going to be way more limited though
I have a deadline in 1 day and all I need to do is just add actors that I spawn at runtime to a UI scroll list, so I can have the ability to click on the item in the list, have it selected in the world and also show me information related to that actor in my UI
everyone said I need to use a subsystem for this
and I can't think of a decent way to achieve it
no need for a subsystem for that, just a list view and a selection mechanic. But if you’ve done nothing so far and left it for the very last day, you might not finish in time
No I have the selection mechanic done, everything else is done including the UI and all my components and everything
it's literally just the population of the list part
ok
It lets you add items dynamically to a scrolling list
Much appreciated thank you 🙂
Hi, I have a problem
🎯 my goal:
Eat 10 berries even if they're scattered across slots
💀 problem:
my logic is checking only one slot... Im thinking of ways to to improve my loops
Ive thought about doing something like this & also adding a "Array of Found Indices" or "Number of Found Indices" ?
Example: say you needed 10 pencils but checked only one pouch in your backpack instead of all the pouches
I'd just do it in 2 passes
1 pass to check if you have what you want
2nd pass to go and eat them
For each container, for each slot, add up how many berries in total
was it enough to eat 10?
for each container, for each slot, eat every berry you come across until you've eaten 10
If you have a nice way to address items you can just accumulate a list in the 1st pass and just directly eat those without iterating again but it doesn't really matter
For each container, for each slot, if there are any berries, record the container and slot and count and sum the counts, stopping once count > 10
then foor each container/slot/count result, eat them
This is what I had before and this is what I have made now...
So this was made to count the total amount and it kind of works
but very buggy, idk if its buggy because of my fruit eating blueprint logic
or because of my function itself but i find many bugs along the way
you never use amount you need here
you need 2 nested loops
for each container -> for each slot -> count how many of item are there
but then I need to set up some kind of boolean on the other side right?
or integer counting how many indices I have?
because this Is Item in Inventory all it is is just an inspector
or a researcher
wat
You need to return an array of indices for the found item indices. You currently just return the last one from the loop.
it's not handling any executions, the removal authority is set up here.
is inventory system 1 container or does it contain ALL of your containers?
yes, but total slots is returning the total indices
This handles 1 container right?
1 container is inventory system, the other is UI container
the UI container is different, and here the communication is very complicated
it shouldn't be different is the thing
yes
My character mesh flickers whenever I move, any suggestions on how to fix this and what could be causing this? thank you.
There's a lot of issues to be honest. With this I can see you're using the quantity for the index to remove. This would cause issues.
The whole thing is a damn mess lol
That function is named Is Item In Inventory, so it should return a bool or maybe a count, thats it
you're confusing yourself
Just make simple functions that do exactly what they say on the tin
then your mechanic is this simple:
Do we have enough? -> yes -> ok eat them -> call OnInventoryChangedDispatcher (this is how your UI should update)
@snow halo Adding to this, you'd have two functions, one that checks if you have x quantity (return bool) and then another to remove x quantity.
Hard to say, it could be an issue with the anims.
thats already how im doing most things
ok now make it work
Also, only use text for displaying to the user. It shouldn't used as an identifier as localization will mess it up.
what do you mean exactly???
My UI container isn't exactly an array container
I can't just change the whole UI tbh
so a while ago I really tried working with arrays and Tmaps, this is when i was just starting out using them and I didn't know how it would be possible to do all of this into one container
or I couldnt think of how i could do this with one type of data
for example this is the offensive items radial menu
and before everything I make all these outputs into variables so I can use them like little appendix instead of having the typical noodle code with the lines everywhere
but yeah the way im doing it is through direct variable change
I only have 8 slots so don't worry... it's not a whole lot
I decided it would be wayyyyy easier for me to understand and code it this way
For example, this is the switch octapus for adding operations
On the interior it's very cluttery but it makes sense for me
The "adding operation" is bug free too...
the removing is kinda problematic at the moment only
😵
crafting works, regular removal works, only fruit eating fails
How does dependency work in your system, does the UI know about the inventory, the inventory know about the UI, both, or neither?
due to the fact that im removing 15 each time i take a bite on a handful of berries
show your current fruit eating code
if you refer to reference viewer connections they all have dependancies, if you refer to my ui getting data from the inventory or my inventory getting data directly from the UI then no.
For example if im gonna throw away a boulder, then I just have to remove 1 boulder from my inventory and 1 from my action control UI <----- in the action control UI goes only items that are useable aka you can make some action by holding them, like a bow, or a placeable item or something like this. For example if you collect some type of powder, you can only collect it, and you can't do something with it, unless if you directly craft something with it that is later gonna be useful or useable, and then it will finally go into the useable items UI for you to select and use it.
wait your satiety lives in your widgets?
btw you're running IsItemInInventory many times
my health & stat bars, yes
yes I know, I tried to make an experiment
but it's not meant to stay there
Anyways, this is a goddamn mess
true.
ok back up, are you wanting to have an animated loop and eat 1 bite of berry each time, or do it all at once?
Im just wondering if there's any way to make this any bit more readable, it has gotten to a point where it's really weird
yes
Which one?
so a handful of berries is 15 quantity
is a handful of berries 1 item or a stack of size 15
no you can only eat them.
so press button, if you have at least 15 berries, you eat 15 berries, correct?
Hi!
Does anyone know if there's any already built in way to async load a level into a persistent level?
OK so have 2 functions, one to count up how many of an item you have in total, and one to remove that many
EatButton -> ???? -> do you have at least AmountPerInteraction of Item? -> yes -> remove AmountPerInteraction
done
thats it, that's all
put the effects on the yes path (the satiety, sound fx, animations, whatever)
yes, but it gets more complicated, because you have more than 1 slot in your inventory, and berries can begin to take up more space in your backpack for example. The problem is, you shouldn't just look/search into only 1 pouch to judge how many berries you have stored into your backpack, your backpack can be made up of as many as 30 pouches for example
have your DoYouHaveEnough function search everything
it's trivial
I've already posted it 3x here today
for each container you have, for each slot in each container, how many Item are there?
a nested loop
Simple functions, just 2 of them.
HowManyOfItemDoIHave, returns an int
and
RemoveThisManyOfItem, returns a bool (in case you forget to check how many you have first, can technically not return anything if you're careful)
my UI container doesn't work with arrays
also I don't need to do a for each in my UI
my UI just follows changes that happen in the inventory, the inventory is the main Big brain boss, the UI is just the 🎵 Radio announcer or 📰news reporter, reports news back to the player, news which he can finally interact with. The UI container doesn't make the news either.
Not even the inventory actually makes the news.
but the Ui container is a follower
The inventory is the first reporter and the ui is more like the radio host that broadcasts it to the public or re-posts/retweets it
(for each item (in inventory content))--->(for each item(no array))----> ?
I don't have more than one array
first thing, you need to start listening to the feedback, you get some cues from Adriel for example and you try to fight with ''but it's good this way'' while it's not
also you 100% need check if you have enough cherries otherwise if something requires 10, but you have 3, it will eat 3 and produce item, you need check to return you bool (resources ''deleted'').
you make this all so bloated.. break it in small things and start clearing useless shit
Inventory
Remove From Inventory
Inventory Has All Items?
On Inventory Update (pass whole TMap)
maybe 2-3more functions and u dont need anything else
Add To Inventory and Remove From Inventory both call OnInventoryUpdate, InventoryUI binds to it and displays things
I made this instead of for each - for each because only my inventory has an array
it works ✅
it's still bloated and it feels like when youw ant to add something you will need to edit it all in 14 places but ok
the editting doesn't have any problems. It's been months since I even touched the add operation logic
Just from a glance I see like 3 things that probably dont work like you think they should
if there is at least 1 of the item you are looking for you are returning the last index of the array, the ID of the last item in the array and the quantity of the last item in the array (regardles of what that last item actually is)
so while it might, by some miracle, work, its a headache waiting to happen
Which index im looking at here is decided by the Name == Name thing
after you complete the Loop the index is set to the last item in the array
The first or the last? 0 is the first
code should be easily readable and self explanatory, im not by any means perfect but just trying understand what this function exactly does is headache, which means its bad practice
you are looping through the array and the index goes up
so unless you break the loop (which you dont do) when the loop is complete the index is the last index in the array you are looping through
also why there is input amount you need but its never used.. xd what does it even check towards 0 default??
youre right
-1 should be like None
I should use -1 there instead of 0
to invalidate it❌
you are asking the amount you need
in the input, right under Name
and then do absolutely nothing with it
Ok I fixed every condition, this should deal with all possible scenarios, and now it should also work and be a little more generic or modular or without any need of function/use-case specificity, it can be used for many cases :
1)Green Light = You are all good (you have enough).
2)Yellow Light = Small reward (you have enough, but not enough).
3)Red Light = No energy reward (you have nothing, you are punished).
or
full tank ⛽ = you can drive anywhere (full reward)
half Tank ⛽ = You can drive a little (small reward)
empty tank 🛑 = Youre stuck in the middle of the desert (no reward)
just wondering about how to make the functionality for the edible items even more modular or automatic or generic or overall more efficient in the coding process terms. I know someone said something about the readability, should I add more collapsed graphs or functions or macros along the way?
forget the ui here, it can do its job after the fact
you're making the code to eat 15 berries and add satiety and trigger the cosmetics
has zero to do with UI
a couple issues, lets go through them one by one
why are you returning the ID?
I have no idea, sometimes I just forget garbage inputs/outputs on top of things and never even use them, ID has been removed✅
@snow haloBack up, make a "HowManyDoYouHave" function
make it from scratch
should just take an item id as input and return an int
Not enough but a small bite - you can tell by the Total Amount, and if its more than zero. You don't need an output specifically for this.
Let me cook, hopefully I can get them there 😄
yes but it would make it cleaner on the other side, it's better to have some clutter mess hidden under the rug or the closet, rather than having all your clutter occupying your room where you usually live.
In writing for example we need to make paragraphs to make loong text more readable and entertaining/interesting
Should be this simple:
HowManyDoYouHave(Item) -> Result = 0 -> for each container -> for each slot -> if slot matches Item -> Result += Count
-> Completed -> return Count
it makes a clutter of your output, which is generally worse
when code is isolated/hidden inside of little rooms I think its better and more readable and is easier to debug it
Then once you have that, your specific eating logic can be like:
TryEat -> Num = HowManyDoYouHave(Berry) -> if Num > 15 -> true -> do the full bite (eat 15 berries)
-> false -> if Num > 0 -> true -> do the partial bite (eat Num berries)
-> false -> no food for you
Code in little rooms is great. If your rooms have tons of fake doors and windows and slides to other rooms, it's a mess
yes, but also your rooms should have a specific function. Have a room for Work, and nothing else. Have a room for cooking, and nothing else. One for sleeping. etc.
what you're doing here is trying to mash several functions into one room and quickly close the door before the mess spills out.
yes but think of what im doing is i want it to be like sending a lumberjack into a forest🌲🪓
i gotta tell him which tree to start chopping (start index 🌳),
how many trees to take down (how much to delete 🔥),
and when to stop before he accidentally levels the whole forest (stop index 🚫)
or say I have a cleaning robot remotely controlled from while im at work, I wanna tell him/her/it [1] start sweeping exactly from here (start index 🧹), [2]sweep exactly this much dust (how much to delete 🧼),[3]Stop when you reach the end of the mess (stop index 🚫)
ok so it should stop either if it sweeps enough dust, or runs of mess, whichever comes first?
thats why I need index & other stuff, and also I can use the integer or the other stuff to see how much energy I should increase based on how many or how many calories Im eating per bite.
That can all be handled outside of the core HowMany function
Im not sure yet.
put that in the EatNumBerries
you just want to be sure how many you have before you commit to starting to process them
You're putting the cart a mile in front of the horse, get the simple case working, then expand
So all I need is just 1 output?
how about index?
why would index matter
you're asking how many of item you have
I guess I can run that outside with the other function that exists for that purpose perhaps "IsItemInInvetory" will need to come again afterwards
what about that EatNumBerries you said earlier?
you can just return your total amount
assuming it's a local var which it should be
it'll start at 0
yes it is
remember that's only going throuhg 1 inventory
you need to go through ALL inventories
or whatever your equivelent of all the containers is
I only have 1 inventory
so whats with all the talk about different pouches etc
the other one is just a visual reporter on the changes that happen inside of your actual inventory
is that just in UI?
much better
you can even return the Your Total Amount without the last branch, but thats a nitpick
Hello, I have a small problem that I need help with.
I have a component attached to another component using the 'Attach Component to Component' node.
I want the child component to stop following the rotation on the X axis while still following the other rotation axes
that was about the slots
I still have zero idea how your system is set up but if it works it works lol
If you're curious this is how my remove from UI works, it's like a babushka russian doll, thing inside of thing inside of thing
what the actual fuck
I made it back when I still didn't know very well how arrays and tmaps worked
and I sticked with this because it was easier to understand
funnily enough
this meeting could have been an email
this graph coulda been a loop
trust it, it couldn't
loops had so many problems when working with tmaps
I would be much better off just writing this in c++
remove
thats the best way to make us try and make it lol
removes what from what?
you remove foods from your inventory by eating them
you remove rocks or arrows (in the future) by throwing them
So, I'm trying to add a camera rotation when holding middle mouse. the rotation is working fine. but it only works once. after i let go, i cant rotate anymore till i reset the game...
you remove other resources by craftign them into something else for example, but you do that through the crafting menu mainly actually
not through the action control UI
ok so why can't you just:
for each slot -> if slot.item = itemtoremove -> math to adjust CountToRemove and Slot.Count -> if Slot.Count = 0 -> clear slot
but there is a mix of both if you wanna remove something, you can't throw things yet
Trust me, it can all be super simple functions
You can make almost anything you want with HowManyItems, AddItems, RemoveItems.
Set bool to true
those are the building blocks of all other inventory manipulation.
I think it's still gonna be kinda hard even if I do that
I have a duplicate radial menu inside of each ui mode, I have action control UI for offensive items, tool style useable items like axe, pickaxe, etc, plantable items, buildable items, and edible items
you mean the default? for is rotating?
none of this has anything to do with UI
Filling your offensive items UI is just looping over your inventory and checking WhateverMakesAnItemOffensive (a bool, a tag, a base class, whatever)
that is already pre-decided anyways since im kinda crazy with Inventory_System functions
it works anyways but I have a double check on both sides ✅
Wait a moment, it seems that everything on your side is fine.
Just use print statements for each variable until you find the cause. Maybe the button only works once, or there might be other factors affecting it
I noticed that if i middle mouse click it sometimes moves my camera to a bit but not always. im using the topdown map template. is it possible theres some default setting in that conflicting with what I'm trying to do?
The best solution for these situations is to do more verification using printing until you discover the cause of the problem. I know this is tedious, but it will not take you much time and you will find it quickly.
still kinda new so unsure the exact procedure, there. just placing a print sting after each execution pin you mean?
Start with the rotation logic you created first. Print and verify that the events and variables are working properly.
If everything is working properly start checking other Blueprints are they unintentionally sabotaging your logic?
If everything works, it might be due to the project settings. Check them or try the logic in a new project.
will do. thank you
Hi guys, need help. I've been following a few online tutorials on how to do damage on character. I put the widget component on the player character. And drag the character blueprint to the scene for testing. It does seem to do the correct damage by looking at the print string debug. But the widget updates for both the player control character and the one I drag out to the scene. Does it mean I can't share the widget on them? What if I have many of the same type of character on screen. Is that mean I have to make each one of them a new widget and a new blueprint? I believe I've done something fundamentally wrong here.
Thank you in advance.
I am new to this, but it is a little bit strange if UI is responsible to pull the data. How is that pulling health data triggered?
ah it is from binding I guess
if the class is same, I wonder how to differentiate the instances. Maybe it is better to create a dedicated variable for the pawn on the widget BP. And register this pawn during widget creation from each characters
You mean to create a variable inside the widget but how do I get the updated health from the character?
yes, you can replace that Get Actor of Class with that dedicated variable
Get Actor of Class will return all that class instances, maybe that is why all of them shared same widget data
I have also tried casting. Casting make both of them stuck at max health
hmm ya I think this is what I am struggling. They share the same widget data
Wait where are you actually using the interface you made
And also I think your understanding about interface is off, basically interface usage is not working like that. It is for polymorphism purpose so you can asume a "thing" to have some functionality.
In your case, the one that need to implement the interface is the character it self, and the interface will need to have a method like PawnHealth and PawnMaxHealth so the widget can have this dedicated variable as Actor for example. SO you don't need to have specific BP_SSCharacter on your widget. And no need to cast it.
This is more like scalability purpose. In case, later on the one which have this widget might not even character, but a thing like a turret, etc.
Let me wrap my head around this
It is understandable, I need to spend a long time to understand the essence of OOP, lol
oh wait it hink i get it maybe
I UNDERSTAND INTERFACES NOW
NOTHING IS IMPOSSIBLE FOR ME
AAAAAAAAAAAAAHAHAAH
I found another tutorial that explain way better. Similar to your suggestion. I got it to work and making way more sense. Now the setup is:
- Made a function to have empty variable for health input in the widget. Instead of setting binding in the percentaget bar. Directly set the result directly into the percentage
- Inside the Character blueprint, cast the widget and feed in the health data to the widget input.
Give it a week, you’ll be confused again and have to understand them all over again 😀
Fwiw, that's less desirable. The Character shouldn't access the Widget to set this. But if it works for you for now then it's fine i guess
Hi, I was spawning a niagara particle on a bone location (with it's own rotation offsets for each particle - there are many) via niagara particle notify. (img1)
I want to now translate that into a anim notify which i define in the ABP of the character.
The problem im facing is that now the rotation is all messed up (everything else is ok). How can i, make proper rotation so that the offsets that i originally set within the vfx notify to work properly for the anim notify inside ABP ....
Here's my current setup (img2). Im pretty sure im messing up the rot calculations here but I can't for the life of me get this right.
Please no cross posting. You asked in #ue5-general already. Read the #rules again if you aren't aware of this.
Is there a chance that the original math was wrong and you fixed it by setting a RotationOffset that is now wrong?
What you can try is to, instead of splitting the Transform Struct, is to call "Transform Rotation" on it and feed it your Offset.
ok will try that
that was genius mate !
this fixed it perfectly ....
thanks a bunch !
this is the bounding box problem. every mesh in the engine have bounding box, if the box is inside the camera view then the mesh appears else not
Hello, Is it possible that the Interp Speed of the "VInterp To" is in second.
And the one from the "VInterp to Constant" is in milli second?
No, but VInterpTo simply calculates differently
VInterpToConstant moves the same distance every frame and VInterpTo moves the same portion of the remaining distance every frame.
Which means the closer it gets to the Target, the smaller the steps.
At least iirc
so if i want to manually control my ease, i need to link the Vinterp to constant with a curve i guess
Yeah but at that point there are probably better ways
Such as using the curve directly or using a timeline
i'm inside a component, so i don't have access to timeline 😢
yea if the duration is fixed
you can still save the start time and do Now() - StartTime and use that as evaluation time for the curve
i use the tick event for the time of the curve, so far i'm wondering how i can change the curve time
with a timeline there is the play rate
but here it's tricky i don't have that
don't use a curve if you want a variable duration
i would just use an ease function then
and use the value as alpha to lerp between both locations
I mean, you can use a curve.
You just need to make the X axis 0 to 1.
And when grabbing the value from it you pass in CurrentTime / Duration.
Then it doesn't matter if the Duration is variable
Something like this. Mostly just a random example, not with any direct use-case. Take from it what you need.
thanks
you can also use map value range clamped
instead of dividing and clamping
it's the same, but reads a bit nicer imho
your in range would be 0 - Duration, and the out range 0 - 1
Yeah that's fair. I think that also takes care of division by 0 problems with Duration being invalid.
Hey, everybody, hope it's ok to ask a total noob question:
I'm taking my first steps with event dispatchers. Surely I miss something painfully obvious, but after trying to fix two very simple blueprints for several hours now, I'm calling out for help:
I just want to destroy the sphere in the screenshot when I step on the white platform. I've got an event dispatcher on BeginOverlap in the platform BP and in the Sphere BP I try to bind to a custom event that will destroy the actor.
However, no matter what I do, my "Destroy on Overlap" variable seems to be invalid. I seem to miss some reference? But what? Any hints are much appreciated!
Here are the BPs and the error I get after ending PIE:
did you set the actor reference in the level instance of your overlap actor?
also add a delay until next tick node in your beginplay before you subscribe to the event
might just be an initialization order issue
your actor is probably not initialized
that's fine and expected
you can't set a reference in the BP editor
you need to get the reference of your box from the world, or by doing a get actor from class
because your sphere is waiting an information from a box overlap, but which one?
here you step to an overlap box, but your sphere doesn't know that she need to listen to one in particular
did you just assume the gender of the sphere...
yeah in french we don't have it for no gender object, we just have he or she... and in french a box is a feminin word 😄
so it needs to listen that overlap box in particular 😄
for your understanding purpose you can do here a get all actor of class (get (0))
no
he can just set the reference in the level instance of the actor
there it IS possible to set a reference to an existing actor
yes, or in the blueprint
but in all cases the box is not initialized with the one he overlap
we don't know that
yes we know
no, we don't
at least it's not when he try to access on it
I have a character blueprint that has an enhanced input action, which i have defined to a key in my IMC. For the life of me though, i cannot get the input to actually trigger. The character is auto-possessed on start. I'm probably missing something fundamental here, would really appreciate any help.
there's a setting for receive input / enable input in the actor, is that set?
auto receive input im assuming?
set that
you should show your Mapping Context blueprint and the IA action 😄
you put a trigger hold
i thought hold just worked as press or hold
that means only the Hold will be activated
and undo the other change, as it was probably a wrong lead
no in your input event node, you have the list of trigger
ah i see
so down as the default behavior will apply for as long as the key is held?
and hold requires you to set up a delay timer and whatnot i assume?
which playercontroller do you use?
whatever the default is atm
its working though, thank you, was a dumb problem lol.
what was the problem?
it was what you said, the hold. I just assumed incorrectly as to how it worked.
The default behavior (down) was really what i wanted.
@barren tangle @spark steppe - thanks a lot guys for the input. It's true that I missed to set the reference in the Sphere instance in the level: and for this sphere it now works - thanks!
However, in a next step I spawn these spheres with another BP - so I need a way to establish that reference in the Sphere BP. How would I do that, please?
for me the trigger it's to put a special condition to be able to trigger the Input Action
The spawner need to get the reference of the box and provide that reference to the spawned sphere. and the spawned sphere need to use that reference to attach the dispatch event.
Or your sphere can scan the world and search all box that can destroy her and pick one... here it's your imagination that will work.
But the idea is the same, the sphere must know which will trigger the event.
"The spawner need to get the reference of the box and provide that reference to the spawned sphere. and the spawned sphere need to use that reference to attach the dispatch event."
Understood - but what would be the practical steps to do that?
I couldnt understand. What should I do?
- In your spwaner, find your box.
- In your Sphere have a variable to store your box. (expose on spawn for example)
- In your spwaner, create your sphere. and add the box referene to the spwan node.
- In your sphere the attach must you the variable that you have receive
(Attention, it will break your previous implementation based on the actor in the world)
any tutorial or at least a pointer on how to make a 2d cutscene like this?
Thanks
Hey all, I have a game where the main character can possess enemies. My issue is that when the player swaps, the health bar doesn't set to the health of the new enemy. How would I do this? Thanks. Below is my current health bar widget bp. The enemies are all children of the top down character bp so in my mind I figured just casting to that would work, and then realised that's not going to happen
I have tried Get Controlled Pawn, but that doesn't work with the health and max health variables due to not being part of the same bp (as it doesn't yet know the current controlled pawn)
it's just some widgets displayed.. check how to play animated sprite into your material, use those animated sprite into some widget, and that's it... after functionally you have a dialogue system somewhere. but nothing exceptional here
Some questions:
- what return your get Actor of class?
- How do you possess new enemy?
get actor of class will return the top down player character (the main player, all of the enemies are children of this base)
I possess enemies through this blueprint below (using a line trace before hand to know where to aim it)
If you're fairly new to UE, forget the 'Get Actor of Class' node exists. It'll cause you more problems than its worth and send you down bad paths.
In this example, the node just returns the first top down character it finds which isn't likely to the the one you want.
How/where are you're widgets created?
my widget is just created on begin play in the top down player character
I have only recently started using it as I heard that it was usually better than casting. Though, I'm not sure how true this is
Who is PlayerPawn and Who is Self?
They're not comparable. Casting is just a type check, the other finds references to actors in the world.
Anyways, if you just need to show the health for the current character the player is controlling, in the widget, you can get the owning controller, get the controlled pawn and then cast to the top down character.
However, there are additional improvements you can make but go with the above for now.
self is the Top Down Player Character (the base of the enemies and main character) Player Pawn is set in the possession blueprint as the target you are possessing
I see, thank you for the clarification on that
so if i understand your flow:
- You search a target?
- You find a target = Enemy
- You call your event "Posses Enemy"
- Posses Enemy event start...
- Player Pawn is the Target (Enemy)
- You replace the controller of the Player Pawn which is the enemy by the controller of your player.
- You notify the widget to update the health bar?
- The widget update the heal bar ( doesn't work)
it's all working now thanks to Pattym, the issue was that I was getting actor of class rather than the pawn the player was controlling, and casting to the base class.
Also, it might be worth putting your stat stuff (such as health) in an actor component. This way, you can use the 'Get Component by Class' node to get it from an actor. This can allow your widgets to work with any character as long as it has the stat component. 🙂
Just something for you to think about.
Thank you, I didn't know that. I'll take a look
RIP
@barren tangle Thanks for asking the questions, i was to lazy to ask. 😅
but the think is, we know the issue was probably comming from there...but that code... is a nightmare 😄 trying to make it realize by himself instead of telling him rework your code because there are concept that you don't understand and you are locking you in something, regarding the direction you take... and performances wise... working with blueprint like that
my questions are there to bring them into that conclusion 😄 hahahaah
when you write code oriented component. (reusable component), you can't work with timeline. So you have to work with tick even and timer. I'm not sure if it's the good approach to create movement like Dash System into a component. But if i want to have a dash that i can reuse on different project just by adding the component to the actor.. (call it's fonction) i don't see any other possibility to that...
Is it something that is more friendly to do working with C++?
I read that the timeline was available into C++ component, is it correct?
If i was to do a dash, i'd do it with a montage and motion warping. If i needed a component, all that would do would be calculate the desired end location for the motion warping and possibly, trigger the montage. No need for tick or a timer.
mmm i don't know : motion warping.
is it the movement inside the animation? that is something i would like to avoid, i have feeling that we don't control how the game work with animation with movement.
Motion warping is a component you add to an actor that can warp the location during a specified period during an animation. You specify the target location on the component and then use a notify event on the animation to indicate it can start warping. It's pretty cool to be honest. It can be a little finky at times but overall works well.
it's a plugging (Beta) ?
It's a plugin (provided by epic) but I don't think it's beta.
I'd say I'm surprised with it being in UE for about 3 years. (maybe longer) 😅
24 Jun 2021 was when Epic did there first video on it, so nearly 4 years now. Its worth learning as it allows you to manipulate root motion during an animation which is super handy.
A lot of people used it.
i have watch the tutorial, i understand the concept.
for the moment i create the game without animation... but i guess one day i will have to reconcider that when i will add animation
Yea, it's good for attacks to help guide the animation towards the target.
i have created that manually 😄
lol:
Also for dash to help orient towards intended direction
I'm not gonna start re-inventing worse wheel
haha because you knew it exist 😄
hahaha
there is lot of stuff we don't know that exist
Yea, there's some very smart people at Epic that have an understanding of maths I can barely comprehend, I'll happily let them do the heavy lifting where I can. 😅
yeah but now you know
. Almost everyone usses motion warping, don't let the (Beta) tag fool you,
i have spent 1 week to understand vector in unreal !! now i'm good, so that why i was able to recreate that. but if iknew that wrapping things i will have to check that first and see how to exploit it accurately
thanks, i'm despressed now 😄
Hey all, I have been working on making items interactable when the player is looking at them with linetrace hits, but as of right now I cant figure out how to have the line trace line up to my crosshair (which is not center screen, its partially below center). I was taking shots in the dark with the rotate vector around axis node, but Im not too sure where to go from here. Im shooting the line trace from the camera, but want it to slope down to the crosshair. any thoughts?
Don't be, you'll probably be able to more easily identify issues when warping decides to take a break. I tend to just poke around and hope I dislodge something. lol.
Why is you're crosshair not in the center?
As for an answer, you'd need to deproject from the screen space to world space. Trying to hard code the angle would be a nightmare and would break with DPI scale.
I suppose there is no significant reason other than it visually looking bad when I equip my blaster. Thats crosshair center.
As long as you're crosshair won't move, you might be able to get away with deprojecting once and storing the location and world direction that then get used for the trace.
You might have to update the values though if you change the screen size/resolution or move the crosshair.
Ah, got it. Yeah the crosshair wont move, the widget just becomes visible when you equip the one time.
Does anyone know if you have to initialize local variables? I've seen people initialize local variables with a set, don't they initialize with the default value?
is there any miss leading tutorial or what, I saw 2 persons exactly implemented this today, lol
damn, that's a very bad code.
Widget should reflect the owner not some "Get me a random actor of this type from the map"
They don't need initialized if you can set a default value.
I would like to set an image based on a String Variable, but I can't change the integer to a String. Should I really be using a DataTable or something else here?
You could use a "Switch on String" but ideally you wouldn't be using a string to do that comparison at all.
It is for my main menu where the player choose which level to play. What would be a normal approach then?
the best way is to actually get the level it self.
the soft reference though
pretty sure world is exposed to blueprint now.
They need to be able to change level with the arrows.
Then I would have to make an array of soft references for the actual Levels in GameInstance or something?
(That I can cycle through as they press arrows)
If it's for the image, you could use a map, with the soft world ref as the key.
Perhaps a struct array since he need the indexes
might want to drop more info like the map's name
At which point a data table starts sounding pretty nice
But then you're back to trying to refer to the particular levels by an FName.
Right now I have a Map variable in the GameInstance I need to reference which is probably why I thought of a String initially.
Need to retrive completion stats for the varies levels etc.
FName just means a "Name" variable right?
Yep
This is one option.
Wow, thorough explanation. Thank you.
And the main benefit would be that I can't end up with a Name pointing to a dead end, because the Level Variables would update even if I change it in the Editor at some point?
pretty much yea. Promoting to a variable is the only way I'm aware of being able to get a soft world ref in BP as the world var type is hidden otherwise. (to stop you from loading all you're maps at once)
Feel more comfortable using a Name variable to be honest.
I would have to convert that to a Level when the player actually wants to start the Level though.
But I also need to get saved stuff from the GameInstance or DataTables with a Name anyway, so I guess it ends up being about the same.
You can convert it to the name of the map easily, plus you can load a level directly from the soft ref.
Something like this for example, (not fully setup) you wouldn't then need to worry about the names being miss spelt or updating changes across multiple places.
On the subject of soft references, does anyone know if it's possible to cast a soft ref? Using the to soft object reference just returns a generic object soft ref type.
PrimaryAssetIDs will help here.
are you able to provide more information?
You just need to set it up in the asset manager.
Wouldn't that still return it as a standard soft object ref? instead of a soft world ref?
Oh, right, that converter for softrefs was mine. 👀
Would beed CommonSessionSubsystem to do that in BP I suppose.
Does anyone know what this node is in 5.5? I downloaded a plugin, but can't find it anymore.
It looks like the json plugin that comes with UE. You just need to enable it in th plugins section. I can't remember the name though.
This one i think.
Hello! I am the lead programmer on Xolo and the Forgotten Gods, a senior student project developed at SCAD. We’re planning on releasing it to Steam somewhat shortly, but we still have this pervasive bug that I can’t find a fix for for the life of me.
So sometimes when dealing damage to enemies, specifically in *built * versions of the game, the entire screen will briefly turn black aside from the HUD. The reason I say sometimes is because the glitch is *incredibly * inconsistent, which is a big part of why I haven’t fixed it yet: I don’t know what’s causing it to happen. I think I’ve made about a million builds where I individually turned off a different step of the damage code on enemies (I spawn a vfx, I briefly change the enemy’s material, I apply a short period of hitstop to both the player and the enemy, and I do a little camera shake) in an attempt to figure out which step is causing the issue and it still happens.
Here’s a video of some gameplay that demonstrates what I’m talking about, you can even see how it doesn’t always happen consistently. (Apologies for the performance, we’re still working on that + my computer hates running the game and recording with OBS simultaneously (though if you have any suggestions on how to improve performance, that’d be awesome))
I’ve asked all my fellow programmers and professors for ideas/help with this and turned up squat, so I really need some sort of Unreal uber guru to help me out with this.
How are you driving that fade-from-black at the very beginning of the level, when you’re loading in? It also doesn’t affect the HUD.
Does this ever reproduce in your editor?
No, that's a big reason as to why I haven't fixed it yet
Also I'm not entirely sure, give me a second and ill check
The fade in is being achieved with a widget that gets added to the screen
Have you tried a build where that widget doesn’t do anything or isn’t even added?
No I have not, I'll give that a shot
The person who wrote the code for adding the fade in widget stuck it on the begin play event for the level transition actors we have, meaning that multiple widgets are created if there are multiple transitions, which is some shoddy code I'll have to fix later on
The widgets also arent programmed to remove themselves from parent after the fade, which is...irritating
ok, it still happens even with the fade widget removed
Does anything use https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/CameraFades/StartCameraFade?application_version=5.4?
Do you use post processing materials?
Those are kinda the main things I can think of, offhand, that would cause something like this.
Yeah I dont think it would be UI related since I only happens post-build, so I think it has to be something graphics/rendering related
Like I changed the fade in sprite to some random other thing and it still happened
I'll ask some of my team members since that was not really my area of focus
We have post processing volumes but the material arrrays for them are empty
Do you have source control?
If you do, you could binary search the game at various points to try to find when it first started happening
We have perforce, but idk how to do that 😅
I’m also not a rendering person, there may be other avenues to search and debugging tools
Does anybody remember when it first happened?
Not really, no, but it's definitely been a while
you pick a CL exactly halfway between a known Good CL and a Known Bad CL. Known Good CL might be init commit 😬, known Bad cl might be current CL 
So you pick the halfway CL and test a built version. If it doesn’t occur, then you split between the midpoint and the Known Bad. Otherwise, it does occur, so you need to split between the Known Good and the midpoint.
It might be that you can’t build every CL- in this case you eventually arrive at a range
This process sucks, but the idea is that it narrows your surface area- things that can cause this fault- in a way that blindly guessing won’t always
We have a lot of revisions though, so idk how feasible it would be to iterate between them all
Hence the binary search pattern
Perhaps
If that black screen is reproducable through dealing damage, then I would continue commenting out/disconnecting stuff until it stops happening.
I beleive I've tried that before, but its possible I missed something
Instead of making a million more builds
You also might try adding a bunch of console variables that control which parts of the damage chain you run
Then you can try all the combinations in a single build
Hello. Does anyone know how to flush input so that when a user presses shift for example to sprint before he is given a character he does not need to release shift and press it again to start sprinting? This is a very annoying issue I'm having in my game and can't seem to find a fix for it. 😦
Oh cool I had no idea this system even existed
There are nodes for getting console variables yeah
Though I dont know if it will be necessary, because I think I have found the culprit, the attack hitstun
Which works like this
This code runs both on the enemies and the player when the player hits an enemy
or....maybe not
You want “Flush Player Input”
Otherwise the PlayerController or LocalPlayer may have functions related to Flushing
Hmm I can't seem to find that function. I'm using UE 4.27
With this, is it possible to create new custom console vars?
Are you able to show some logic for what happens when an enemies takes damage? So we can see what it's doing.
uh yeah I can try
@final heath also, for you're polish list, make you're enemies spawn about 0.2 after the particle. 😉 There's a few frames where you can see them before the particle has engulfed them.
oh yeah thanks haha
I managed to fix it. The problem was that I wasn't using an axis input. Changing it to an axis input fixes the problem. 🙂
itll be a little hard since it's spread out across stuff like interfaces and whatnot
This is the universal damage code
....which is completely unreadable 🫠
here we go