#blueprint
1 messages · Page 247 of 1
not really... you do want to use the mesh collision for an fps game for example
you do want to account for headshot, arm damage, etc when you actually hit the proper area
if you actually want to trace againts the body parts, then use mesh for the collision
otherwise you can just trace againts the capsule component
Im not sure what the default collison settings are for the default capsole, but i beleive its a pawn object type?
like an RPG game where you don't care about hitting the head, you can just simplify the combat by hitting the capsule
I really need to open unreal so I can tell you exactly what function to put D:
well, it does work now
Hard to remember the names ontop of my head
Well yes
If you want to just set the capsole compnets visility to true
That works to
i did.
set it to overlap, not blocking
Awesome!
oh it doesn't work now
if you need to trace againts the mesh collision, e.g. looking to shoot a headshot, you will just have to make a new custom channel
Oh yea thats right
Hit and overlap are two different things
You would need to be able to HIT for a linetrace
i did make a new custom channel for explosion
You may want to setup a new collision channel for this.
Then linetrace by that chennel!
And set the capsole collision to block that channel
i have that setup already, but then i need every new wall or object to block this channel as well
so do i just make it default block?
Yes, you can set up the default value for that channel to be block
You can even customize it to be block only for certian presets
I also see another potential bug
I dont see a point in using the find look at rotaion / foward vector formula to find the end point of your linetrace.
You can simply start at the center of the grenade, and end at the potentialy exploding actors location.
Currently, your linetraces are extending 450 units, past the exposion radius of 400
i did do it , and then i added this forward vector section because i thought that the character is "escaping" the line trace by jumping
i will remove it
Not as this would be causing a bug right now. But could be a bug in the future as you adjust values
originally it was from grenade origin to player origin
Awesome
thank you for the help! @jovial steeple @frosty heron @dark drum
I've seen this happen before when there is some massive invisible collider blocking the spawning area (Possibly some mesh with weird collision). Ive also seen it happen if you override some of the framework functions for FindPlayerStart and such incorrectly.
Most of the time its just some invisible collision though, and the game trys to adjust the players spawn point outside of it.
You may be able to check for that using the player collison debug draw mode.
It seems as if you have a suspicious water mesh all over your spawn room 🤔. Confirm it has no collision
I.... Help, I didn't - how would I?
so I need some suggestions, I have this pod thing which player gets into when moving to and from the reactor however as it moves either one of two things are happening
there is a glitch in the movement code so can be times it may move back to where it thought it was but isn't, or the player isn't moving with it quick enough and as such the player is trying to catch up at same time it's roughly moving and causing the glitchy feeling
would it be advised I have the player sit before it moves to prevent any odd things happening ?
I have been using the Asset Manager to load Primary Data Assets like this. However, this will load all assets of the given type and I have now come to the point where I would like to load only some assets of the given type. Maybe only from a certain folder. Is that possible?
I guess I could filter the Primary Asset Id List by asset name before loading the actual assets. That feels a bit like a workaround though
Or if I had to rephrase my question: How do you group/sort Primary Data Assets of the same type and load them by group instead of all assets?
HI everyone.
I'm new to UE, doing blueprint-only project, and currently don't even know what and how to google and where to look for an answer, thus I'm here
I'm currently implementing a 2D map for the game that has nodes (like a combat node, event node etc), and the player can interact with those nodes by clicking on them. The system every roguelike game have. All those nodes are Widgets. And I need to draw a path (line) between the nodes that are available to the player to show where they can "move" and which nodes are available.
And I don't understand how to find one node (widget) from another node without too much hustle.
Sure, I can create variables and manually assign "neighboring" nodes by hand, but that's just too much.
When the map was 3D, I just did box/capsule trace around the node to find surrounding nodes and draw a path, but how do I do this in 2D with widgets?..
It seems that you are attempting to use front end user UI to manage a backend data system.
This is an example of how you would typically implement this:
- There is a backend NodeManager class. This is just data/code and is never seen by the player. This node manager stores data about each node, it has a function to retrieve nodes at certain cordinates, add nodes at cordinates, etc. It would store all this data in some sort of list of all nodes.
- There is a front end UI class. This is the visual node map the player will see. It makes calls to the NodeManager to find out which nodes to draw in which spots. This UI can always ask the node manager to find nodes closest to another node.
Also, the benifit of using this sort of seperation between the backend data, and the front end user display, is that you can change the user display to anything without actualy affecting the backend data.
Meaning the same backend data manager class could be used to power both a 3D map, like you previously had, and this new 2D map.
Devs often do things like this to speed up itteration time, for example if you decided to change your map to 2D all of a sudden.
I see
But how do I input nodes into the Manager? By hand? That's what I don't want to do
Regardless if it's backend or frontend, the question is how to operate it, how to find nearby nodes.
From what I can guess from your idea, I make something like a coordinate system where I can state the coordinates I want? But still, I'll need to input the nodes by hand first, which I really really don't want to do
if the nodes are placed on a canvas panel you can retrieve position
you can iterate over the other nodes and see which are in range
just subtract one position from the other
and see if the resulting vector is below a threshold
Oh, that's it!
I can just grab all nodes from the class, get a list, and iterate from the list to compare coordinates and see if they are in range!
- You can either input new nodes into your manager by hand, or have a
GenerateRandomNodesMapfunction call theAddNodefunction on yourNodeManagera bunch to generate new nodes through code. - There is not really a clear way to retrieve nearby nodes using the widget system alone. It depends on how exactly your widget is setup. Using a
NodeManagerwith an actual retreive nearby nodes function would handle this. - You could use a cordinate system in the node manager or anything else. It can be done in many ways.
This is a hacky enough solution to work yes.
that's a lot of nothing
It also sounds oddly GPT
It would be a custom system made by him designed for his need. I dont know what he wants exactly its just an overview
In case you're interested, I did end up replacing all my trace logic using CPP, which was equally slow.
I found out what the problem was. Turns out unreal's Paper2D turns every tile in a tilemap into its own box for collision, so my entire 100x100 map's ground is made up of 10,000 separate box colliders. (Whyyyy doesn't it combine???) It's normally not a problem, but I guess the fps issues surface when trying to trace against all those colliders. Turning off the tilemap's built-in collision and replacing it with a single regular plane fixed the entire issue. I can run 400 line traces per tick without any slowdown now.
Ok
@remote cairngo the the Learn Catalog and filter on Beginner or search for Blueprints: https://academy.unrealengine.com/totara/catalog/index.php
This may be a good one to start with:
You can also check out here: https://dev.epicgames.com/community/unreal-engine/learning even if at the moment I am getting a 400 error
It may just be an issue on my side though
pls help how do i fire it only one time? do once node doesnt work
wait nvm i will move logic to the eventbeginoverlap and use hit only to update hit direction and location
so i'm having an issue where if I attach my player character to a scene component within my BP actor and the have my BP actor move my player gradually glitches to outside the NP actor and being pushed off into the void
for context the BP Actor
the longish box in middle is the seat component that player can interact with where the following code is ran
Thats whats happening
also might want to turn volume down as there sound with the vid that may be little load
so from what I can tell it's like the actor is lagging behind so the component players attached to is moving but in that tick the actor hasn't moved yet so techinally it's not there with player ending up on the outside of it
anyone able to help me refine this to see what I've got incorrect
please
Hey all, I’d love some suggestions on something I’ve come across for a board game I’m working on. Ive been trying to implement rolling dice with impulse, full physics. The issue is that it doesn’t replicate accurately on other clients which means the results are always different than on the server-side. Besides a pre-determined approach where I would simply fake a dice roll with a timeline and some variable that has a result stored in it already, is it possible to get that physical aspect to replicate properly across all clients?
Anyone able to help me with my issue here please 😦
not sure whats going on like but
why would this be a problem ?
One is a component, the other is the actual mesh.
i have a function to grab an object and now i want to that i can move the grabbed object back and forth with mousewheel up and down, can someone help me with that?
NVM I see it
Quick question, is there anyway to check with blueprint nodes if I'm simulating game or in regular play? Or is that only possible in cpp
does anyone know why the top line of text isnt right-justified? is there a way to achieve this with richtext?
check text justification
by default its left
whoops. thank you
Nice. I didn’t know you were doing Paper2D or that it does that to the map but good to know
They both work properly, but i wonder are these same things?
Debugging says resolver node is a "pure cast"
Kind of.
This will work only because you're calling the loading of the asset first. If you didn't load it first, then it would return none and cause an error when attempting to set the mesh. That said, casting to Static Mesh isn't the worst thing in the world.
Got it, so result is always same if i use it on "Completed" output
Because it will return valid object if its completed ig
Anyone know why when I do this code it seems to fail, it seems like the character ends up grtting move further then the actual component it's attached to it moving leading to player being pushed outside vehicle and falling through the void
It should yea.
Thankss
Your snap settinsg should probably be set to keep relative rather than snap to target.
or keep world
so if I do keep relative my player ends up way underneath in the void
wouldn't keep world mean it won't move with the component it's attached to ?
No. It defines how the actor is moved when attaching. "Snap to target" means to move the actor to the location of the actor it's being attached to for example.
i'll give keep world a try see what happens
Thanks, that works. My videos are all 3840x2160. How can translate that resolution to the plane that plays the video?
hi, why Slot Group doesn't work in Linked Anim Graph?
They do
Can you click on your anim graph and show the settings?
You probably want to slice them. Divide the task into multiple frames instead checking all of the 10k collisions in a single frame.
Keep the func in cpp if you are going to loop that much, at least you don't pay for the bp overhead.
Is there a way to get all actors that have a certain controller class? Working on stealth shit, basically need the list of everything in the level with a brain
you know what i never see explained in any introductory videos on unreal? references/deleting/force deleting assets.
It kinda seems nonsensical. I have the starter content for first and third person templates loaded for example as a fun little task, going through all their blueprints and figuring out how they work/recreating my own versions of them. but when i go to delete the first person/third person folders after, the only option is forcedeleting due to a reference i apparently have. whatever that is.
and i go through all my blueprints and go box by box looking for any mention of a variable or input mapping or function defined in the third person blueprint and find nothing.
References aren't always in a blueprint, or in the level.
If you find those references are gone after an editor restart, it just means you had them loaded into memory by some mechanism or another, not that it's necessarily going to mess things up.
Fortunately, if you use source control, as you should, permanent issues are hard to come by, you can always revert if you keep committing and pushing things
i'd have to know what references actually are, along with what you mean by references being gone, or source control to get what you're telling me
i don't have any error saying references are gone. I just can't delete something in the content browser that isn't in use in any way as far as i can see
Yes. A reference refers to the thing being loaded in memory. All it can mean is "Yeah, it isn't in any blueprints, but we still have the asset somewhere in memory, so here's the warning"
If you find you don't get the popup after an editor restart, that's what it will have been.
Source control is a way of keeping all the versions of your files on the project. If you do something bad and it messes something up, you can just revert back to a stable point. Think of it like time travel.
ah ok i see
whatever memory constitutes, you'd think it'd be "what's actually being used in the game"
so for example-
yknow it's weird. maybe it's just because google can't find a damn thing these days, but any time i look up p much any proper noun from UE - like "memory" or "referencing". "memory reference", etc all i get is incredibly dense, highly technical jargon posts that feels like trying to read an untranslated foreign language by brute force and guesswork. you'd think there'd be exponentially more questions asked at an entry level of knowledge before people fall off and the number of people sticking with the engine winnow down
It is in a way. Memory constitutes the things loaded into your RAM.
These assets are in RAM, despite them not necessarily being in the level or a blueprint.
you mean at the time of using the editor or at the time of running the executable were you to make one?
To be honest, it's because these are generally pretty technical subjects.
The engine as a whole is targetted for AAA so a lot of resources and documentation assume the baseline knowledge. It sucks, but it's the reality in a lot of cases
At the time of the editor
It doesn't know what will be loaded in the packaged game, it only knows what references exist now
so in other words when it simulates the game, that simulation is asking for x file to be present
You fall into a sucky category for this engine a lot of times.
Tutorials that cover fundamentals well don't tend to be algorithm friendly so are hard to find. Tutorials that skip needed knowledge and charge in with flashy content do better and push to the front.
A lot of personal blogs aren't SEO friendly so don't appear on search results, and the documentation is aimed a lot more to it's AAA clients
it's kind of a sliding scale between dense AAA jargon and garnering a bad reputation from being "too accessible" and having asset stores that are "too easy" as if that's a bad thing. like unity
ig that makes sense that people working in those projects would be working with them daily and asking way way more questions online.
Again, not quite.
It just means that at some point, of the editor being open, this asset was loaded into your RAM. for convenience with assets, it doesn't unload them so you get a nice smooth experience without hitches.
If those warnings disappear after a restart, you can confirm that all references have been properly removed and the asset is safe to delete. If they don't disappear, look around again or restart the PC
ahhhh ok. i see.
thank you that clears it up very well
am i on the right track then thinking it'd be something similar to a function/variable/input etc
(there's prob more i'm just not acquainted with yet)
No worries!
Again, worth a look into source control. It's your safety net. There's a guide in the pins of #ue5-general
It's useful if you ever make a mistake that does royally screw something up, you'll always have a restore point provided you keep committing and pushing changes.
How do you mean?
as in that's the kind of thing that'd make a persistent reference between restarts
i've been operating on skyrim modding mentality of testing every thing i change before i save it lol. i probably should get on that
It shouldn't make a persistent reference. Once the program has exited, your OS and the engine should clear up the space in RAM that it used, thus getting rid of the asset from memory.
If the error persists between editor sessions it means it is still in use somewhere by some other asset, or it's an odd transient error that a PC restart would fix.
that's more or less how i'm imagining it.
It could also mean it has a redirector living somewhere potentially that hasn't been freed up, so try fixing up redirectors in the folder and if you're extra sure, just hit the force delete. It shouldn't do anything bad, but it can, and that's why we have source control.
A redirector if you're unfamiliar is a special type of asset that gets made when you move something, it essentially lives at the old location, and tells the engine the new location of the asset. Its a stupid system and I hate it, and you won't be used to it from other engines, because things like unity just use things like .META files
looks like you were right abt restarting the pc. that seems to have wiped it from memory. i guess i did get everything that was being referenced
yay!
i'll add that to my personal study doc
an editor restart should be enough in most cases, but the editor can be a little funky sometimes and a pc restart is needed 😆
now to do the same with the weird levels it asked me to save when a previous version of ue5 made you save a weird level file when using save-all
those unfortunately still get referenced in memory🙄
totally outside the scope of this q&a tho
I want to deactivate the niagara component Door Shield, for some reasons I am able to activate it with this technique, but it is not getting deactivated when active. Is there something I am missing with niagara deactivation?
Are you certain your code is reaching that point? Did you use breakpoints?
yes, the code is reaching there, I used print string, I think it is due to Inactive Response of Niagara System State, selecting Kill solved it just now.
is their a way to add a conditional check for if an actor in a map should be created? I want to give maps a world state, and only load certain actors depending on the player's world state for that zone. I know in beginplay i could do a check on the actor and just destroy itself if it's not part of the current world state, but that feels a bit inefficient, i was wondering if their might have be a better way to go about it?
Btw, I did find that Blueprint Communication tutorial, it looks really loaded with information even though it's pretty old. Thanks a lot for the suggestions! Being new to blueprint, this helped me a lot!
Yeah, Niagara’s got all sorts of finicky things 😅
I mean you could do the opposite and create it if needed, rather than destroy it if not needed
well the problem with that is then i can't just place the actor in the level right?
hmm, i could technically have a level data asset which has a list of actors to track/spawn on map load, then i could mark those actors as editor only actors, so when i package the game the level data would be aware of what to spawn in/where for the map.
I prefer spawning over placing anyways but that’s just me 😁
hmm i see, well this idea might work well enough for what i want, thanks.
it's a shame that you can easily copy functions and components from one bp to another, but can't select all variables and paste them in the same way 😦
anyone has any idea how i can set the graph on a new PCG graph instance that i just created on disk? i cant seem to find any node that works, i tried casting to all sorts of PCG objects but nothing seems to work yet
imho the best thing they could do would be copy the variable scope when you copy a function and ask you to create the missing variables in the same scope
right? It already prompts you to create missing functions, why not vars
I'd ask the #pcg-framework crew
good idea
I have to go look at each greyed out var and right click Create Variable and hope that I got them all before I hit Compile and the engine yells at me 50x times 😄
Hello
I am attempting to do the following:
Object collides with an actor with a collision box
Object is attached to the actor
A copy of the actor nearby spawns a copy of the object, and attaches it to itself
Then the copy object matches location to the original
But when I attempt to do it it spawns in the centre of the copy, and I cannot get it to move to the correct relative position.
Is there a math issue here, or is there an easier way to do this?
Sockets?
Why can't I trigger this damn thing? Either I get an error, when I don't get an error, the system doesn't work.
I tried to do it with a flat reference but it didn't work, so I tried with the interface and it still doesn't work.
Basically what I'm trying to do is : Make a weapon blueprint that will parent the others and just trigger it without adding code to my character.
First you need to understand what the error is telling you. Then you need to learn how to debug your code. Then you'll be able to fix the code on your own 🙂
but just to save you sometime, that error means your AS BP Weapon Base is None (nullptr), so you are not setting it properly at the time it is being accessed. Or it's not set yet, in which case you need to have an isValid (?) check to mask the symptom
as for when it doesn't error out but still does not work, you'll need to use breakpoints to find out where the logic stops. You can't follow the code through an interface call though, so you'll need to put it on the interface event or on the message
I need it to work with multiple objects with physics,, so no unfortunately
because...they're not SKMs or why
they are actors, and I need the object to enter the field, create a copy, then delete it when it leaves, and have as many do this as I want
Hey, can someone help me solve this problem?. My character just spawns in the middle of nowhere
what is this proxyInterior
its the copy of the actor: A copy of the actor nearby spawns a copy of the object, and attaches it to itself
I could be blind but I don't see anywhere in your screenshot where you are setting that variable
Its set elsewhere
in begin play
just know its the copy of the object with the box collision
it has to be spawned on runtime, so its set in beginplay
in my short xp with attach actor to actor, it'll attach to its center unless you give a socket. You can try attach actor to component with an arrow component or such maybe.
I know its setting centre, im fine with that
in the same frame I try to set it to the correct position
you can't do that, it's attached.
it is attached.
Seems you have one already in the world set to auto possess
thats why im trying to set relative
spawn at 0, then force to the correct position before physics take effect
Have you tried setting the xform manually and maybe checking what comes through
Doesn't break on breakpoint?
transform
interesting the breakpoint fired before collsion somehow
there we go now its fired properly
I ran the breakpoint and the spawned copy is not visible when it ran
does the spawn actor have a delay?
depends how heavy it is, but usually no
why is the set relative disconnected now?
how?, i didn't understood
You can place your character manually in the world. Make sure you don't have one.
I was just testing some different relative math, it was wrong, but its back now
so you're back to visible but not being able to move it?
no I just moved to next frame, as you can see the nodes are no longer active, its like it waited a frame to spawn for some reason
Where are you appearing in relation to the rest of the map?
No, there is a fundamental problem here that I cannot solve. I opened a new blueprint, I tried both normal cast and interface, I can't even trigger a simple print string with my character. I don't remember experiencing something like this before, where am I making a logic mistake?
run a test off the cast node, it could be failing
Yes, the issue here is your knowledge of references.
The owner of your RogueBase is probably not a NewBlueprint, thus you cannot cast it to it
A cast is a type check.
In this, you're asking if the owner of RogueBase, which is probably nothing, is a NewBlueprint
wdym "no", no what?
but also if you're having weird issues, restart Unreal for sanity check
How to quickly drag drop nodes in between others?
yes
ususally I just drag off when creating it
yes
ye
I dont think theres an automated way to do it with existing nodes*, I havent found one at least
its probably so you dont create a mess by accident
eh, bigger fish to fry
that too
mouse is small, just add shift modifier :<
Can you simply tell me, how I can trigger an event in another blueprint with my Character?
interfaces or event dispatchers
You need to get a reference to the blueprint
it needs to be cast correctly, otherwise it has no idea what its looking for
from here
eg looking for type sorry bad wording
casting is checking to see if something is the correct type, and return a converted reference if it is
he has some sort of reference there but its failing
is that 0,0,0?
What is that volume you appear to be spawning in? The only thing I can think is that the engine thinks you are "inside" something and it's trying to move you out
^
i''m 99% sure
Turn on your collision view
See if you're trying to spawn in a collider or something
It's an odd one
pause quickly, then press F8 and select your character, it will give you the coords
also check what your character is
also, check if you have multiple game starts
could be set to the wrong index
Why doesnt this work??
Because by the time the delay has happened, the component might have started overlapping something else
other actor is the THING TO TRIGGER THIS SPECIFIC OVERLAP
It doesnt apply the damage
it should still fire tho, it has the references
there's no guarantee that OtherActor will still be the same thing by the time that delay finishes
Also make sure you're actually receiving damage somewhere
Yeah I am
I've seen people before think that health and damage works automatically :P
Ok
Then yeah, what Adriel said
This is exactly what that code will do:
Something Overlapped!
wait 0.6 seconds
Damage the last thing to have overlapped.
you could overlap 30 things in one frame
maybe store it temporarily
get it to work without the delay first
altho nvm because it would get overidden
There's a better collision viewer. click where it says "perspective".
Should show everything in solid colour blocks where colliders are
Yeah it works with out the delay
It just doesnt when I add the delay
then its exactly the problem i laid out
youd need to stand in the field for 0.6 seconds to get damaged 😛
could always wait on receiving the damage :P
What are you intending it to behave like?
maybe set up a timed event
that you get damaged 0.6s after entering the area, no matter what? Or that you have 0.6 of grace period before it hits you
Grace before it hits
You need more logic than this then. First off, you want to filter out all the overlaps you don't care about.
You can do that by casting or refining the collision settings or various other ways.
one quick thing you could do is just move your player start somewhere safe and test that
like on its own out of the map with a platform
just make sure its not collisions
i've have only one player start in all my project
Do you care about hitting anything besides the player's pawn?
sorry, said the wrong thing 😆
Meant where it said lit
Keep the perspective view
its just in case, sometimes Ive done that and its messed up a few things
My concern is it's adjusting you to the bottom of that green collider there
i've aleready done that, still not working
ok thats weird
If it isn't, I haven't a clue
maybe delete the start and create the character manually
the thing comes like this. I've done all this tutorial says https://www.youtube.com/watch?v=yea9YP3lPcw and it didn't worked, so I revert all that settings as the default settings of unreal engine, but after applying that tutorial stuff my character just spawns there
Support me on Patreon:
https://www.patreon.com/elusivepanda
In this video I show you how to create a level transfer system using the player start component. This system does not use level streaming so it keeps all levels completely separate.
The level transfer system allows you to control where you spawn on a level based on where you exited fr...
how can i do that?
Yeah I just wanna hit the player
delete the game start and just place the character in the world
with auto possess
Looping or 1 time per entry?
One time per entry
if im standing in area do i get hit once or once per x seconds
Just once @faint pasture
should I follow this tutorial?
https://www.youtube.com/watch?v=dgkQGUeWKSA
In this video, we take a look at how to switch between a player character and a pawn. We also show how auto possess works.
how would you efficiently make a tap sprint? ie sprint until you move backwards in first person or until your movement abruptly stops/you stop touching analog/wasd
as in- how do i either trigger that condition to run my simple Terminate Sprint function without continually looping and checking for the stop conditions, or only check while my character is sprinting
Easiest way I can think of
BeginOverlap -> check if it's players pawn (cast, equality, however) -> set timer
EndOverlap -> check if it's players pawn (cast, equality, however) -> clear timer
Timer -> dmg the players pawn or all overlapping actors or whatever
Multiplayer or singleplayer?
single but i'd happily learn both lol
I mean in multiplayer you don't make a sprint in BP at all
multiplayer is a bit special 😄
that worked
more of a come back when you know c++ kind of thing?
but i can only play with the current camera location
multiplayer movement is a big topic
ic
but ignoring that, assuming sprinting is just setting max speed on CMC
you gotta check
cmc?
cant I just make it so that it only overlaps with pawns? in the collision settings or something?
oh, my question was how to efficiently end the sprint
something somewhere gotta do some checking. If you don't alaready have events for releasing input or stopping or slowing (from something else checking), then you gotta check.
although before i spawned in 0,0,0 with both views
that might mean there is another pawn somewhere in your world also trying to possess, and placing it manually overrode it
oh ok
Yes, but if you have AI then they are pawns too
it all depends on what you actually want the rules to be
ok, that helps a lot. How can i locate and delete this pawn in order to spawn my character from the player start?
I dont know if theres a quick way
but if you mentioned you still spawn at 0,0,0
it might not be
You're already handling inputs on tick anyway, it's dirt cheap to just check if input is still in the forward direction and velocity is still above some value
hmm maybe make a temporary new pawn and possess that
blame minecraft java brain for assuming like 6 things on tick will ruin the game lol
ok, i'll try that
is there a way to only associate my chacter with the player start?
if you still spawn as your third person character, then something is overriding it
think thats set in gamemode
Whether or not the character should end sprint is fundamentally a "check it each frame" problem. Something, somewhere, has to tick and check.
ok, thank you very much. I'll manage to delete the pawn that is overriding my character. Now i have a clear view of what problem i have and how to solve it, so thanks
good to know. is there fundamentally no way to run something on tick but only if bool is true?
i mean i guess it sounds like one of those fundamental issues
and thanks for you too @thin panther
tick -> branch
I mean you're ticking anyway
No worries! Apologies I couldn't be more help!
Now if sprinting was just dependent on the button then it'd be a no brainer, but it's dependend on some derived state (velocity, input direction), that can change over time
@dark drum @frosty heron for future ref, the missing SKM in Standalone was due to some weird char corruption. The fix was reparenting to Pawn and back to Character (after many other failed attempts at a solution)
I got it working, thanks so much for the help @faint pasture
glad you managed to fix it
don't worry, youtube, chat gpt, and unreal engine's foroum either
if i can't find the pawn that its overriding my charcter i'll have to start a new project
Hey is there a better way to use "local variables" in events? Since impure function calls cache the values of their output pins, I'm using them to fill that role
You mean inside the functions ? Cause you can just GET the input anywhere in that graph
no i needed to save the starting location so it can be used throughout the timeline, which i would have used a local var for in a function, but this has to be an event
hey guys, when im holding down right click to pan my graph, sometimes when i release the mouse button it opens the node picker panel, and its kind of annoying when im trying to navigate.
anyone know how to stop that from happening on accident?
any idea why the part in pink can't be used to detect if the character is stationary/moving backwards?
more specifically it can't detect motionlessness
it treats either motionless or backwards as correct. whichever fired last. so if you tap s and let the char idle you'll get a correct printing of the stationary/backwards string nonstop, but the exact same can be said for w, s, d
Hi all
Is there a way to use a single "On Component Begin Overlap" node for multiple Collisions in the same Blueprint ?
I have 10 Box Collisions on my Blueprint Actor and I'm wondering if I need to call "On Component Begin Overlap" for each or I can use something to use only one node ?
I guess I found it, sorry !
so i'm getting weirdly fixated on this weird little quirk that evidently just doesn't sit right with my brain
i'm sure when i do see it it'll seem really stupid but right now my dissolving brain just doesn't comprehend how this doesn't print string number 2 when i move backwards with s.
it's not like it's a third person problem exclusively. i'm using a cheap first person button for this where i use controller rotation yaw and stop orienting rotation to movement when the player enters first person so i'd assume that messes with output of the forward vectors in my previous image
and even then it detects the greater-than and not-equals in the middle of the second pic as identical for purposes of checking if the player is going backwards in first person and should ostensibly have a negative y value
is that velocity relative to the coords of the level instead of the player char vector? do i need something other than get velocity?
There’s a get/set velocity in local space
That was supposed to be the exact name
damn
Ik I’ve had to use set velocity in local space iirc
But also why do the velocity check?
it's for detecting backward movement as an immediate way to end sprinting
Oh hang on
You’re doing equals or not equals zero on a float
You can’t do that
It’ll never be exactly 0
Use near equals
oh weird. i just sorta assumed there'd be a point where 0.0000 whatever would just snap into 0 for some reson
Nope
wait but the part acting up is the greater than
in fact that equals actually seems to be working
even in first person if i stay still, move left or right with no other inputs (not analog), then stop moving, it correctly prints not moving
aha having this on is what made that issue
@thin panther i diiiid iiiiitttt
congrats!
can anyone tell me why this is behaving like the selected absolute value is being ignored?
this works with the exception that velocity x is returning a negative value when going left despite the ABS
how is that even possible
Do components have constructor scripts?
i don't even understand constructor scripts so i'm leaving them alone for now
no
oh ok so it's the velocity. it's using world coordinates not local space
i still can't seem to get local space velocity
construction script is just something that runs slightly before the actor appears in the world. It's more of an editor time convenience and is stripped out of shipping iirc.
Say you wanted to randomize a material, or construct a spline road. Construction script is your friend
oh ok
but yeah this whole thing is just supposed to return no if staying still or going backwards and yes if going forward or to the side 😭
I have a component that spawns and attaches a weapon actor amon begin play. I want to be able to have the weapon he present at edit time. How can I do that?
the short answer is that you don't
you could use a child actor component for a visual placeholder only, but don't use it for your actual weapon logic
i'm losing my mind
how do i get my local velocity
Weird I guess you can SET but not GET it in local space ?
i guess but that set was only for projectile movement evidently
A preview is a good idea. Would the placeholder just get destroyed on begin play?
not automatically. You could hide it in play.
Just remember to strip it out
Oh, that makes sense. I guess I was dealing with projectiles 😅
why is this incredibly basic simple thing off limits completely 🥹
Maybe you’re approaching this the wrong way
how do we have local coordinate systems on actors and we CANNOT get any info from them
why are they there
Why are you doing this again? In simplest terms
return 1 if going forward left or right
return 0 if going backwards or staying still
that's the whole thing
i guess??? but i'll still need to know my velocity relative to my rotation like a thousand more times with the things i have lined up in my queue to learn to do
Then, if using negate when pressing W or S you should see 1 or -1, 0 for idle
Velocity shouldn’t be relevant unless your character drifts after releasing input
Is this a car or something ?
it's an adaptive first or third person character
yea
wait that still doesn't fix it because this is something i need to detect on tick, not on tick but ONLY if pressing an IA button
sideways movement should still keep the sprint/dash active even if you've let go of W and vice versa
so yeah
maybe i'm asking the wrong question and nobody knows wtf i'm asking because it's such a basic thing idk how a game could even be made without knowing it.
How do you normally detect your character is going forward, left, right, diagonal, etc from their perspective
I don’t understand, you still want the char to run after releasing input?
yes
as in you can let go of shift, not w
you can put the logic after you press the IA
like update a variable after completed/canceled?
yeah i guess that could work in a roundabout way
yes
does fab not automatically add the shit into your project?\
#fab but I don't think so
unrotate global velocity by your rotation
dot products and cross products of vectors
i think the plugin does
im unable interact with the 3d widget even though the debug sphere of the widget interaction component is on top of the button
are there any common gotchas that anyone know of?
im calling these nodes on the widget interact component. the print node also fires when i left click
I wasn't trying to check against 10k box colliders. I just didn't know that the paper2d tilemaps split them up into 10k of them.
I ended up not trusting paper2d to create colliders and went from 10k colliders to like 30 on a small map like that. I can run like 500 line traces per tick without going under 600 fps on standalone. Lesson learned about tilemaps.
Sure I'm just saying if you do have a gigantic task, split them up between frames.
Well this was for UI so I needed it to be responsive on the tick. Not much I could have done there.
And I WAS wondering why starting PIE took like 10 seconds, I think it was rebuilding collisions every time
One thing I did consider was batching these line traces in CPP, looking at the code for AI perception, but that's for a different channel
so i have this issue where i want to use the sword locomotion state machine only when i have my sword equipped and use the other animations when i dont have it equipped, i made a bool that updates when i have it equipped or not, i thought i would just put a branch node but didnt know it doesnt exist in animations, can anyone help how i can do this
You're looking for the blend by bool node.
also if i have a bool in bp_thirdperson i can get it into animation bp by having the same name right
No, that's not how vars work. You would need to get the value from the third person character and store the value to be used in the animBP. In a lot of cases, this would have to be done each time the animBP is updated.
The static meshes has collision and camera is all setup, event so, overlaps with the static mesh. What am i missing here?
Increase the probe size, but even so it's not a really a fix
That is because you need more elaborate formula to find the best placement for the camera
Spring arm will never look good
tyty
@split salmon 1st video is using spring arm.
2nd Video , there is calculation done every frame, to check how much the camera penetrate something, then offset it for the best placement. Final location is defined by a curve. (The code is from Lyra sample game)
I can see you are in C++ server, if you want better camera system, just steal lyra's code
you can look at penetration feeler and camera manager
Neat Stuff! Thanks!
How do I go about handling Save Game files once I have my game uploaded to Steam, and then upload a new version of the game?
I mean if the Save file contains variables and such that may have changed in the new version?
Could be stuff like:
Enum entries no longer existing
Stats (floats) now rolling in a different range to balance game.
well if the enum entries no longer exist and none of your code use the enum anymore, you technically shouldn't run into problem?
You do have to keep in mind the difference between the old and the new save file.
There are times where some things gone wrong for different save files for me.
30% of my dev time is spent on bug fixing and patches. Some patch does a check for save files that get broken from previous patch
I have a skill tree with skill nodes set up based on Enums with a float right now.
Say I no longer want that node in the skill tree to be available. But the player chose it before the update.
Actually it is linked with a "Name" now that I think about it.
use gameplay tags over name
anyway the .sav file can be though of as a JSON object or a text file
how you read and write is entirely up to you
my names are just numbers basically.
0, 1, 2 and so forth.
Don't understand the JSON object part.
I don't know the context but that's why enum exist. Basically a number but with descriptive name.
but in almost all casses, gameplay tag is just simply better
no typo and you get the description of the state
I will keep the gameplay tag part in mind and use it whenever applicable.
this is more or less what youe save file look like if it's readable
okay. So "0" would be the slot?
And the rest is pretty much just variables?
@young meteor Saving is just storing data to a file. You can play around with modifying save file and updating your game.
It's hard to explain but you will understand how to address this more when you have testers. I've released my game for free on itch.io, the countless bug reports I get, I needed their .sav file to debug and make patch.
after hours of testing i was able to narrow down to issue a bit more: widget interaction works when there is only one player but when i increase the number of players to two it doesn't work anymore as soon as the second player spawns in. What kind of setting could be causing this behaviour?
The data saved would be exactly the same, the question is whether or not you use the data in the same way.
I had an instance where I had to regenerate all the GUID's used for all pre placed world items. This meant all saved data retaining to world items broke.
Okay, thank you.
My biggest fear is I'm considering uploading the game with a Demo on steam.
Right now I have some Structs as part of the Save game function.
If I change it later and they run into bugs that is just a hassle.
I'm thinking, what if I try to map everything to generic stuff if possible instead?
So I just try to save floats, integers, gameplay tags, etc. and then I map it to whatever I need when the file is loaded.
Then the Player might suddenly have a new skill node chosen in the skill tree for example, but nothing breaks. (He can even reset his skills anyway and pick what he wants)
The same for balancing puposes. If he finds an item with +7% damage for example. Instead of saving that 7 directly as a float or int, I could calculate what the "roll" number would be instead (say the item could be 5%-10% damage), and save that number.
Then even if I change the possible roll range later to 10%-20% I would just get his roll and map it to the new range?
For further context, sometimes, it can be a good idea to include a save version number that can be checked before anything else is done. If it doesn't match the version number its expecting, you can attempt to convert the save data into the new format where possible.
Good point.
I can only speak for my experience as a solo dev. No matter how hard I think of all edge cases between the diff between old and new save file.
In the end , users will always report bug anyway.
Considering any game or project out there have dozens of bugs, I do like to think it's just something we have to face.
Lets say you cap the level to 45 in your old patch
but you changed your mind because you think thats too high
I understand (and agree)
Just hoping for some best practices or things to avoid to minimize issues.
So you changed the level cap to 30 when a user save.
But the people that plays the game before new version already reached lvl 45
so when they load their character they will still be lvl 45
You can make a patch for example in your new version that checks for character level
and if it's higher than the current max cap (30) then clamp it to 30
then re-save the save file I guess
Right. So in that case a version number might be very useful to include like pattym suggets.
Then I should only have to do all that kind of stuff if the version differs.
And then save it as the new version after the clamping and what else might be needed.
For sure, but maybe there is more elaborate process in studios. I dunnoe
But is there a standard answer for "how bad is it" if the save file does not match?
Are we just talking the Player might not have an item, achievement, unlock, etc., or will the game often crash and be unplayable or something?
Guess that is highly dependent on the actual issue 😄
There can be a lot of edge cases for this type of stuff that normally have to be handled on a case by case basis.
Right. Glad i tried to keep my scope small for this first game 😄
keyword being "tried" xD
As another example, for a project I had worked on, there was a section where a car would turn up at a certain point. If the car didn't turn up you couldn't progress. There was an issue where the data for this wasn't being saved correctly.
Whilst I fixed the issue, I had to also include additional logic to check if the player had already reached the specific point where the car should have arrived and if so, trigger it and the required data wouldn't have been in previous saved.
Right. I can see how that kills the experience for the player quickly
Hi,
I am trying to get direction vector by using "Get Unit Direction (Vector)". When I draw a debug line from moving objects the line is not aligned with original object... Can anyone point me into direction what is missing?
but if I move central object to V(0,0,0) it works like a charm
Hi, im trying to set a boolean in an array but somehow it applied to all the array. Am i doing it right?
you need the Direction*1500+ActorLocation not just the direction
yeah, I figured a mistake in simple math...
Does anyone know how mass is affecting the "Add Force"? I am adding Force vector (0,14,0) using add force at tick to mass of 100Kg and it's barely moving - > I can see a fraction of 10th of movement every second or so
even if "accel change" is ticked to skip mass the movement is minimal but Add Impulse (at begin play) makes a big impact
My unreal engine just randomly pauses moving and gets rid of my cursor every 3 seconds
Any help?
Everything was fine last night
Something's happening with my Unreal Engine where it gets rid of my cursor and doesn't let me move every three seconds for like two seconds. So something happened. I'm not sure, any@help?
how to launch a character in multiplayer?
only the host seemed to be launched
only the host's character can be launched or only characters on the hosts machine can be launched?
show the code leading up to this
finally able to access the variable inside the array individually by utilizing the break
Anyone know why "Set Material" is not causing any visual change? Is there any function I have to call to make the renderer actually respect the change?
I want to create a timer. not set a timer. the text written here that says setting an exisiting timer will reset the previous one. i dont want it to reset even if its set again, rather it creates another timer. how can I do it?
It will create a new one if you don’t run that same line of code again and instead set another timer by event
but I dont know how many times this event will get triggered. so when this event gets triggered twice, the previous one is getting reset. if i knew that this event will only gets triggered twice i can set another timer. but i dont know how many times will it get triggered
this is an event to show what type of score i got to transmit to UI.
so not sure whats happening bt I seem to have an issue where if player walks through this trigger box doesn't seem like it's actually triggering
Is it possible to make a hexagon grid based on these Cube Coordinates (not sure if I can link it: https://www.redblobgames.com/grids/hexagons/) with Blueprints?
yep, I made a system that generated a hex grid, it wasn't very bad
just make a "cube grid" with every other layer offset by half the diameter and it should line right up
I'm definitely not an expert, but isn't this the Offset coordinates approach instead of the Cube coordinate approach?
you tell me
I started with a cube grid, you can see the grid coordinates on each square
I then changed the physical representation of the grid to a hex and offset every other hex row's physical actor
It definitely looks cool haha! But I do think it is the Offset coordination. I want this:
you need the hex grid first, you can calculate what tiles are within your perimeter or those lines with math
you're leaning too hard on hex grid tiles, the math behind the scenes is very, very similar, just use a square grid until you're more familiar
in my case because the entire game was in hex, i could use world coordinates, just make each hex 10(lets say) units across and I could tell what tile the walking actor was on based on simple math
at one point I put a collosion on each tile to spawn and despawn the tiles around the actor so i didn't have a million hexes loaded in memory at once (see the video) but it wasn't really necessary
My game should be a 1v1 just on that specific grid, no more tiles needed. And someone mentioned to me that for pathfinding and calculating if an ability hits a character on a certain tile, the cube coordination is easier to use (once you’ve got it up and running haha). But maybe I can better go with the offset and see how it goes from there. Thanks for your input!
Check collision channels setup
yeah I did that and wouldn't work, only would work if I made my own where I use Box Collision which is what the tirgger box uses but just didn't want to do it's stuff
dont now what are you trying to do but you probably want queue-based approach instead
Yesss. Correct
How do I make this queue based?
Can it be solved using logical coding or there is already a function or a way to do it?
if all you need is like 50 tiles, just make /offset them manually and number them
has anyone tried to get common ui working in 3d world space. It does respond to my mouse inputs but it doesnt get gamepad focus for some reason. I have set focus on the first button element and it runs when firing the on activate event
Does anyone know what's causing this issue?
select a few nodes and press Q to line straighten the connections and wrap them in comment boxes and/or collapse them to nodes with a small description of what the collapsed node does
Looks fine. I like to go like
Begin play
Start game
End game
Next round
In that order tho.
This is a probably a really easy problem but I'm stumped so if someone can help that would be awesome.
I have a Sound set to play when my jump button is pressed and it stops playing when the jump button is released (think jetpack thrust sound essentially). Problem is that when the game starts it plays the sound immediately after loading and I want it to wait until the first time I jump to play the sound.
this is how I have it setup right now
Did you add the sound as a component to the blueprint? If so, there's a setting on there "Auto Activate" which would need to be turned off.
I literally just found that as your notif popped up lmao
thank you
that's exactly what i needed
I might just be dumb because I apparently cannot figure it out. How exactly does the straight shortcut (Q) work? I feel like half the time it raises/lowers the side I don't want. I thought maybe mouse position or something but I don't know I couldn't seem to figure it out aha
more of a conceptual question: would anyone have any idea on how to reproduce bebebese like in animal crossing or golden sun?
Does anybody know how to get a reference to the grass meshes that are dynamically created by LayerGrassTypes at runtime? i need to swap the material out at runtime, but I can't even find the actor to do it. i assume it's part of the landscape actor?
I've never played Animal Crossing, but am aware of what the characters sound like. You'd probably take some samples of common phenomes, then speed them up, then play each sample based on the words that the character should be saying.
@bronze mirage why not use material parameter collection and change it up?
yes its like this
@dawn gazelle I was hoping for a sound generating solution rather than getting a phoneme and modulating it. Then again... what other choice do I have
you can just make a sound for each letter and pitch shift it
itll be awful but it works
thats what cruelty squad did
Oh not animalese
Bebebese
It's 1 sound like a type writer
I despise animalese 🙂
Like a sound effect per character of text?
@zealous moth If the example in the video above is what you meant, then this will do it. Just make sure you have a concurrency class with max count set to 1 for the audio.
can MPCs have texture references? i was under the impression that only floats and vectors were valid in MPCs
I cannot recall but you might as well have the texture in your material and use a switch like a lerp and swap the scalar from 0 to 1
yea that ain't gonna work, i'm not gonna hardcode every possible grass texture into my material lol
if it comes to that i'll just duplicate the landscape grass type object and override the material, was hoping to avoid a bunch of redundant assets though
I was under the impression you had 2 textures. How many do you have? @bronze mirage
more than 2
Link for the same code: https://blueprintue.com/blueprint/n3fhypkt/
Hello everyone,
i want to create a child actor in a existing actor in this scane i want to add a A_Elevator_light into A_Elevator which i can achieve simply by using the setChildActorClass method but the A_Elevator_Light has some variables like light color whose value i want to update on spawn, now you will say you can update from child actor template [image-2], yes, i can update their value from template but in order to do that i need to open the A_Elevator actor every time and this will change elevator class value and not only their objects.
so is there any way which i can use to handle child actor variable values on spawn ??
Set elevator light method is called by construction script
From your "CA Ceil Light" reference, call "Get Child Actor" which then gives you a reference to the actor, then you can cast to your class or use an interface and manipulate it as you need from there.
Okay i will check it out thanks
I made a day/night cycle and it uses a float to determine hours.
On each tick, it works fine and if I print string it, it works as expected.
On the following logic, I wanted to check if the day/night boolean is the same as the condition for daytime yet for some reason, the time always matches.
I'm either too tired to see what went wrong or my way is just wrong
wait a sec... as i type this i am seeing it. It never excludes the other hour
it should be an AND
yep, it's an AND, thanks Datura!
Hi! when opening projects, it open the browsers with a Fab login prompt
it is safe to login?
It should be. This just means you opened an editor with the Fab plugin installed and enabled. You don't have to accept it either unless you want to use FAB in editor.
thanks for that i tried that and it worked now i can set variable values [image-1].
but i think the construction script of child actor ( which calls the setElevatorLight method is called before changing the variable values [image-2], because of that the values which i set in lightcolor and lightIntensity variables is not able implement in the pointlight component and that's why it sets the default values [image-2].
[image-3] i was setting red color for the lightcolor var but it doesn't affect the point light component
Halp halp, so i'm using the started- Ongoing for my guns shooting. After adding a second gun i can no longer mag dump from either of them - it arbitraily stops shooting at lower numbers. if i switch to Triggered - ongoing the guns now mag dump HELLA FAST at lower numbers.
I can't remember how i fixed this waaaaaay back when making my first gun.... it's also almost 3am so i am sorry if this seems like it was written by some caffeinated goblin
first shot is player side BP
https://blueprintue.com/blueprint/e8lxvymn/ pasted blueprint is the weapon BP
cancel that homies, modern problems modern solutions
Jesus wept
Thanks so I guess I have to accept the login if I want to use it for adding stuff I get from Fab
dude saw my blueprints and thought "nah, the sins ain't worth it a second time"
I've seen worse. But it makes me thankful for GAS.
that's probably wrong oO
shoot held is never unset?!
not to mention that it's a disgrace to post such unorganized mess and ask for help...
i do understand my teachers now, but at least they got paid
To be fair its not thattt bad
this kinda programing technique in invaluable when doing the make a game ina hour challenge.
looks more like make a mess in an hour challenge
guy I am stuck at this error sometimes it happening to me when i am in some part of map almost whole map is fine but sometimes this happen and my game crash any tips?
Are you on 5.3?
yes
Don't have the forum up anymore. But it may be an issue with Nanite landscape in 5.3
ah okay so i need upgrade
Does anybody have an idea why this doesn't work fully? I am following a boat tutorial and basically everything works except the boat movement, when i press any of the movement keys just nothing happens and i pretty much 1:1 copied the tutorial, the only difference is that the code is inside the boat itself, not the player like in the tutorial, i just do not understand why the IA_Move_Boat doesn't do anything
Log out the force vector that is applied. Do the numbers make sense? Can also try just pluggin in values of your own, maybe bigger numbers to see if anything happens?
by IA Move Boat not working i mean it doesn't work at all, earlier i simply plugged in a print string to it and nothing was happening
Maybe your input is not wired up correctly
thing is that no inputs that are setup in the boat work. if inside the boat BP i add a Keyboard F key for example and plug it into a print string that too doesn't work for some reason
oh wow looks like it was one small tickbox in the Boat BP details, changed Auto Receive Input to Player 0 from Disabled, now the boat moves
i messed up something with the snapping / rotation and now i can only look right and left not up and down
any help? i forgot what i clicked
Only took a quick glance at your post bcz of time constraints, but I'll throw it out there, anim instances have a save pose snapshot function that you can use to retrieve saved poses in anim blueprints/graphs. This may only work for that specific mesh however. If posing is the main feature, you may wanna look into poseable meshes, that give direct control over bone transforms, however you lose the ABP functionality.
If runtime flexibility isnt a requirement, you can create pose assets for meshes to save your pre-made poses. Not sure what the actors standing in certain position question refers to exactly.
is it normal for component parameters in all my actor instances to reset when I compile the blueprint class? e.g. Box Collision component has a default extent of 500x500x100, place actor in world and change the extent to 20x20x20, compile the blueprint and it resets the extent in all instances of that blueprint to the default value.
https://dev.epicgames.com/community/learning/knowledge-base/oEn6/investigating-blueprint-data-loss-issues-in-unreal-engine#retaininginstancemodifiedvalues according to this, I should not be losing this data on recompile (especially when it's not being set anywhere in the blueprint)
how do i get out of pan mode for viewing?
my viewport is only looking right and left idk wtf to do
Thank you! This is more than enough info. I believe I got an idea now because of you 😄
Hey everyone, Im trying to make system that uses a target float and and a speed float, with the speed value always tending to the target value, and the target value changing at every tick. Whats the best way to achieve this?
FInterp To for a smooth interpolation, FInterp To Constant for a linear interpolation
and i can use these at tick? with the values changing each tick?
oh ok thanks
Paid plugin
Electric something something on the marketplace fab?
Electric nodes
People buy it when they start out cause they think it’ll make them dev better 😁
(people are idiots)
It might help if the curvy lines makes it hard to read the nodes.
Thanks
Redirect nodes and learning how to use variables properly are all you rly need for organization imo
Scope is quite the concept to get your head around.
Hey, using "Enable Animation Budget" in event beginplay, the animations on my character don't work. However, when I activate it through an input, it works correctly. What could be causing this issue?
BeginPlay does not have a fixed exec time. Could be the character has not been Possessed yet or something along those lines
what would people call their game mode that is used at game time so when player is actually in level etc ??
whatever makes sense to them
just not sure what to name it
you have bigger fish to fry. Name it whatever, you can rename it at any time
fairs haha
I tried with delay too
show both codes (begin play execution and input execution)
do i have to also use this node
🤷 realistically this is something for #animation
Hey guys, I'm looking into combining the game animation sample (GAS) into the lyra project.
I thought about trying to replace one of the states in Lyra with the motion matching in the GAS, but not sure how to even do that;
As far as I can tell in Lyra the anim bp inherit from ABP Item Anim Layer Base can only override the asset, not the actual node.
And if I create a new one, I need to override all of the anim layers, not just 1 of them.
Any thoughts?
Hey there, i'm trying to set up win condition so that when the player character overlaps with a component in the BP_WinCondition actor it wins, the problem is that the big ass hitbox on the front of the player character is triggering the win condition (and any other overlap events including the player character) how do I fix this?
Can you trigger event hit from a trace, or would you have to break out the location and just work from that? (e.g. maybe event hit on some other actor is used to determine what limb was hit, not just that the actor was hit)
you can check if actor you hit has specific tag for instance
anyone knows why im getting this error? if i connect event to my current event for instance, error disappears. i get this error every now and then. usually this works for me
Anyone aware of the perception On target update thing not working correctly in terms of not updating constantly and only updating when it detects or doesn't detect something
Can anyone give me nice explanation why AddForce (at tick) and Add impulse (at begin play) result in different object movement velocity? Same force applied
guys help, i made a simple and basic join and create session with steam online subystem but it only works in the PIE mode. when i try as a standalone game it won't find my session ( lenght of array session result = 0). it's really weird because when i tried it with a friend of mine with a shipped build on steam it works just some times
i would really appreciate some help, im stuck
Anyone know why when the enemy ai perception sees me the target move it's not triggering the on target perception updated cause at the moment it's only firing when it does and doesn't detect the player
Do folks know if it's possible to always default to the server's world in the Outliner in UE's editor? I'm constantly having to manually pick that when I press Play.
Hi all !
Anyone has an idea about avoiding obstacles in the air ?
I mean I can't use NavMesh in the air
With a Flying Actor
Making your own logic
There is a flying ai plugin tbf that has the stuff to be able to do what your referring to
I thought about making splines between AI and Player but I don't know how to make that spline updating if there is obstacle
Or I could make a Box Trace and rotate the AI on the Z axis until there is no obstacles but I would rather creating a spline so I could have the "shortest" path. What do you think ?
anyone know if Fab's "standard license" is enough to know its ok for commercial use?
You'd need to make a grid of some kind and then use an algorithm that can create through the grid a path
Or use box traces to trace in directions to find a path until the goal is reaches
I'll try that box traces because I don't have any idea how to make this "grid" thing lol. Thanks !
Well marketplace was anything on there could be used in what ever way providing stuff wasn't redistributed
Bit if what your saying is right then have epic put market place assets behind another licence paywall forcing someone to spend more money to simply use in commercial setting
Also there is a fab discord channel for that question
Anyone know or have sources on how to build an achievement system? What is going to keep track of many different stats or events? Will it be a component in the player state? I’m trying to make a skill tree system that unlocks nodes based on tasks asked of the player and it needs to keep track of stuff like areas explored, things done during or before combat, stuff eaten, etc.
I know I’ll probably need to create an event that gets called during specific actions that pertain to the achievement or task needed, but figuring out how to structure this has been difficult.
Any advice appreciated ^_^
It's usually a combination of your existing systems having proper callbacks/delegates/event dispatchers for everything, and some manager with Objects.
In blueprints only land you are pretty limited in what you can do, but I would probably either work with the GameInstance or the GameState in Singleplayer, and the PlayerState in Multiplayer I guess.
Have a Component as the Manager of the Achievement Objects. It would be the access point for getting all achievements, handling saving and loading the progress either from the hard drive or the OSS if you use one (depends on the achievement itself too).
Each achievement object would handle its own state, subscribe to said callbacks, increment some values, etc. really depends on the achievement itself how they would function.
An achievement object would then have a name, an image (texture), a description, maybe some dynamically generated progress text, to display it in the UI if wanted. Then probably some key for the OSS to unlock the actual achievement. If the keys differ between e.g. steam and egs you'd have multiple.
Achievement Object, when it deems itself as unlocked, can ask the outer manager to talk to the OSS and unlock it. Or report some number progress if the given achievement works like that.
Saving and loading could be done with a single SaveGame object that has an array of InstancedStructs (they should be available in Blueprints). Manager could then ask each achievement for their progress, where each achievement can provide a custom struct if needed (due to the magics of the InstancedStruct). Might want some unique identifier to store alongside the struct to later load the data and assign it to the right Achievement.
But that's kinda all I can give you for now. Achievement systems are somewhat similar, yet vastly different between games. And blueprints, as usual, have very limited options to make things pretty and easy to work with
In c++ I would probably work a bit more with DataAssets and Instanced UObjects
This is extremely informative!! Thank you lots for this! As you said I’ll definitely see what I can do about storing achievements in objects and having the manager activate and analyze the id of the inputted achievement when needed! I’ll look into using data assets since my game is a mixture of c++! (I’ve only been using c++ when complexity or specific scripting calls for it lol)
Sure. For the skill tree your individual object can simply talk to your skill tree system and unlock a node when it's completed
If the nodes are uniquely identified then you can easily set that identifier up as a another variable and put the skill tree related communication code into the parent achievement object. If only some of the achievements should do that you could make an in-between class that skill tree specific achievements inherit from.
If there are a lot of different combinations of unlocks but they are still somewhat repetitive and often used (like one unlocks a skill, another gives 5 attribute points, a third one does both), then either have a strong base class, or work with a bit more composition by having an additional set of objects on the achievement object that reacts to the achievement being unlocked (could be just an array the achievement loops over). Makes those things a bit more reusable.
For that stuff, Instanced Objects are a lot nicer, as you can write reusable UObjects instead of creating a bunch of BPs/Classes.
If it blocks the channel the trace is tracing for, yes.
That is kinda what shaped collisions are for, colliding with things 😄
They're just visual aids aren't they. 🤔
No? 😃
in my card game i have this enumeration for ability cards and descriptions for them but turns out i cant access the descriptions in blueprint. Whats a good way to store this info? gpt suggested data tables which im not familiar with. just asking to see if data tables is the best option. i also read about data assets
best is subjective, you can use Data Table or Data Assets
either one will work
if this is a static information with just a key and pair value (name and description), even a Map will do the job
the map would be stored as a variable in gamestate for example and all the other bp would have to read it from the gamestate right?
also for future reference is there a data type where i could import this key value pair info from excel for example? that would be very useful
I can't answer where to store the data, it has to be in a place that make sense, and that is different per project
if you want to import to excel, then use Data Table, it support CSV import/export
alright thanks
a DataTable is pretty much a map
so rather use a data table than a variable in some BP, you'll have an easier time editing a DataTable
yeah thats what ill go with, watching some yt tutorials about it rn
@spark steppe Hey sorry for the ping, I am trying to rotate the character to face it's input direction.
Any idea how can I convert input direction to rotation?
ok this works
I am dealing with an issue with a very slow subtle camera shake causing jarring micro snapping of the camera when it is starting and ending, like the camerashake takes over the camera controls and offsets it like 3 pixels and then when the effect ends it snaps back 3 pixels. I've played around with the fade in/out timer and all of the diffrent camerashake types, also using a timeline to fade the scale to 0 manually at the start/end but to no avail.
has anyone seen this before?
here you can see the end of the camerashake segment
Anyone in here know what can cause the On Target Perception Updated not to update on tick when it's detected something ??
I've got an issue where it's only firing when the Enemy Detects or loses sight of the player
anyone know the new solution to finding the assets related to the Blueprint specified in Asset Name?
I'm printing the length from the array output and it returns 0
I tried /Game/DataAssets with and without / at the end
I tried having the asset name with and without _C
Get Assets by Path works good on the other hand
I think Get Assets by Class might be bugged...
nothing works no matter what I try
Hi guys.
I got some problems with achievements on Epic Game Store.
All hidden achievements do not unlock.
Visible achievements unlock just like on steam.
I'm using WriteAchievementProgress to unlock achievements.
Do hidden EGS achievements require to unhide them somehow from my code?
Anyone know how to have the actor smoothly rotate to the new rotation I've changed this but doesn't seem like it's smoothly rotating
sorted my above issue
I have a new issue though, I'm doing the following code to rotate the enemy towards the player from mid body up however I'm getting glitching occur when the Player target is and isn't detected
Does anyone know what the camera shake is doing to shake the viewport? I printed the transform of my camera during a shake and it doesn't change any values there
hello!
i have an interface.
On the entering side, i need a reference to the target. Do i have to cast now to define that target?
i wanted to save the actor in a reference,
but to get the widget, i need to cast to it, and i cant get the "cast to" option for that widget.
okay. i have resolved it like this for now.
(it allows me to get the ref i need from a different BP actor, who already has it, the widget reference)
still, i find it unintuitive, i cant cast to it directly, and also, just for interest, i do this once in the construction script, that should be sufficient i believe (?)
if i did it "on begin play" i wouldnt be sure it works for all instances.
Found out what was going on, though hindsight the info i gave was way to vague probably for someone to be able to troubleshoot this. But still just replying in the 0.01% chance someone has the same problem and finds this, so what was going on is that we have a top down game where the camera is exactly on the 90° axis - looking down, and when we introduced camerashakes the camerashake rotation would send the camera into Gimbal lock, as the camera shake rotated the camera over-90° it snapped to some totally diffrent rotation values. tilting the camera by 1° so it was at the 89° was enough to give the camerashake room for tilting without overextending into gimbal lock. hope this helps anyone down the road
Is there any way to make the Character Movement Component more lightweight? It's hogging over half my resources when I have more than 20 characters in a level. All they have to do is walk.
Is there a relatively easy way for a packaged project to launch two fullscreen windows with different viewports? I'm building a kiosk that has two monitors and needs a separate window per monitor
20 seems a little low for it to be that expensive, although it depends what half of your resources means, for all we know it’s half a potato. Did your profiling say it’s due to the CMC?
yeah. I get solid 120fps until 20 characters, then it drops to about 90fps by 50 characters. after that my game starts to crawl and everything moves in slow motion. It's just an empty level with just the mannequins walking. I have a 4090 and 9800x3d and 64gb of ddr5 ram so to slow me down takes a good amount
Ok so you didn’t do actual profiling to see if the CMC is the problem though
It could be anything on that character
Animation is usually a culprit
You can make some CMC optimizations but most of them require modifying the source code and usually it takes a few hundred characters before it’s necessary
So first I’d narrow it down to precisely what the issue is, profile in standalone with named events ticked and so on
Is this not the profiler?
That’s one of the tools yeah, but I’m talking about Insights tracing so you can see details
what would be the best way to fade in and out players camera ??
lets say I have an montage that within the montage theres bits where I want camera to fade in and out. On the player character whats best way to handle it without running a level sequence
Hello there ^^
I am coming to you with a fun issue about collision on spline mesh components that are created in the constructions script. No matter where I set them to BlockAll (in the mesh spline node, separately after I spawned them all, etc), they still remain as ethereal beings. I found an old issue for UE4 marked as "Won't Fix", but I can't bring myself to believe, that something as simple as collision on spline meshes (that aren't even deformed) would not work or at least have a workaround.
I made my Actor following a Spline on Event Tick. When I add a Spline Point at run time, my Actor is going crazy (Rotating very fast) but still follows the spline. Any idea why please ?
the widget component resized when viewport size changing , but i dont need this , i just want that if its size is 300x300 then anything happen it will not change even viewport changes
please help me
Hello, i have a SceneCaptureComponent2D for scopes on weapons and post process material for highlighting targets. For some reason the FOVAngle is not applied to pp material in scene capture. What may be the reason behind that?
Is the post process meant to apply to the whole scene or just in the scope?
whole scene
Anyone had a strange issue where line trace just doesn't return a hit result when it should? Was making a quick gun with a line trace and when shooting it multiple times at the same object only some return hit results
trying to add a component to my player character, but it doesn't show up... what am I forgetting ?
Are you using one of the nodes that has the tooltip "don't call manually"/
i am not
OK... nevermind... 😄
it is working, it just doesn't show in the Outliner
my bad 😄
Whats the cmd in UE to see what sounds are playing and where in the world their playing ?
having an issue with a sound of mine that when I put attenuation on it well I don't here it anymore yet same attenuation is used for another sound in the world
Hey there, I need some help...
I have a simple piece of code that changes the camera from the player parented camera to a camera actor inside the level.
How can I change it back to the player camera after a 1 second delay?
I can't figure out how to cast the player camera back into being the current camera...
Well I tried something weird but it worked
Plugging the player actor directly into the view target counts as a camera actor sicne there is still a camera as a child of the player BP... thus counting as a camera actor
So what should be visible in the scope? 2 outlines?
I'm trying to create a Zone system for an open world with different weather in each zone.
Would it be efficient to make a custom mesh from Modeling Mode and add a component with an event for when the player overlaps, itll display the name?
I'm just trying to figure out a way to do this system and have custom colliders on my map that envelop each different zone for identification.
Any ideas appreciated!
Does it need to be that detailed of a shape?
What sort of shapes and how big?
Basically solmething like this! It'll not be TOO detailed but obviously shaped like a polygon and have walls around the zone
Like when a player goes into a new zone in games like valheim, or world of warcraft, etc. and that information gets updated
I assumed there would be some kind of collision or walls around the zone itself stating it's information
Only way I can think of doing this is by creating a custom mesh in the Modeling Mode and editing the collision and making it into an actor for that specific zone
But then Im curious as to how they make it for games like Valheim where the zones are procedural... ;u;
i imagine they might use a texture to paint biomes on the map
True, but are they like tracking what texture is on the map to coordinate to what biome they're in?
Hello, can anyone help me make it so the magazine of a gun is ejected during the reload animation in the Animation Starter Pack?
How to override a file in ue5?
I am trying to create a json file with data. i save it to my dir like this:
this is the file, it is called Game with out an extension
What if i want to create more than one file? what if i want to modify/override a specifc file?
This seems to be a plugin, so not much people would have access or use the plugin.
You better off reading the docs or join the discord for the plugin if there is any.
If you want to write a new file, we'll don't overwrite the old file.
You can increment index everytime you create a new file so it goes like file_1, file_2 and so on.
It's worth noting that you can make a volume at runtime using the dynamic mesh components. But it really depends on your world gen code and how you're doing things. You need to know what biome you're in to set correct textures, spawn correct foliage, pick correct events for gameplay, etc. A lot of world gen just does it by generating and saving arrays of data as chunks based on an algorithm. And each grid space just contains it's own data. So whether you're sampling data from a chunk's location, a texture, or creating a dynamic mesh around the area, all work, all have bonuses and drawbacks.
Va rest is just a json + rest, pretty basic. Write file to path overrides all content everytime.
Hey guys, I got a small question
When I use the "Any Key" Node and print the displayed Key, how can I check only for keyboard keys and not the mouse buttons?
Got it, I used the "Is Mouse Button" node to make the check! 🙂
Hey mates I know this may seem lame but i really cant figure out what i have done here and it doesn't work
Supposed to be a simple Switch and Door, the switch detecting me being there and when i press the interact button checks if im there and does the function of the timeline i added (on a previous door and works)
I did it for pressure switch and worked fine i dont know what im doing wrong here
Make sure the actor (in the case the door) has been set to recieve inputs from the player controller. With this sort of setup you would normally enable it on overlap and then disable it when the overlap ends.
In addition to that, you also want to make sure that an Input Context Mapping has been added to the enhanced input subsystem that contains the interact input action.
I was looking around and saw the on component overlap
is that something more apropriate ?
i put some print strings and it appears the InputAction is not doing it
here is the mapped input
You need to enable input on the actor so that it'll recieve inputs from the player controller.
the actor on this context would be the Switch how could i do that ?
So when it's overlapped, enable input. When the overlap ends, disable input.
ah like this ?
legacy input 😦
ye it's 5.0.3
Enhanced input exist since long time ago
hey guys i mistakenly deleted my bp class please how do i recover it (edited)
i have to use this one because thats where we were told 😦
sounds like you didn't use source control.
set one up now to avoid damage in the future
Who told you that? and you don't always have to listen to anyone that giving you this advice
?any help
this is considered bad practice tbh, you want to handle input in a centralized place ideally.
Giving input in other actor here and there will be debugging nightmare.
You can check the Project\Saved\Autosaves folder. But that's about the best you'll manage without source control.
i'm being graded for uni, we have to use this version because that's what we are going to load into a specific hardware later
yh how do i put it back in the folder
bcs it doesnt show up wen i lunch the engine
Content folder is the base of your project folder. So put it back where it was in that folder.
yh i did that
i should put it in content folder
or the folder it was in content folder
we are not talking about unreal engine version though, you are using UE5 so the enhanced input is available for you.
yeah i have enabled it
aurther
I would advise you to use that instead
comes with many benefits, including more events such as triggerd, cancelled, etc.
How would i use it on this context ? like create an enhanced input im not sure what it should be doing
ah im an idiot
You can download Third Person Template and check the settings.
probably faster than absorbing videos
How is it that so many people mess up my name? Aurther, Arthur, Arther, Authear, Authar, Author. It's literally on the screen in plain text. 😦
Gonna rename myself Steve.
lol i am sorry
@maiden wadi
Do you know what folder it was in before you deleted it?
if i got it right, I would replace this with this right ?
How do i map which button it is tho, remember on later version i could choose which one it is
in your input mapping context
on the BP or the project settings
An overview of the Enhanced Input Plugin in Unreal Engine
Project settings is for legacy
the input mapping context will be an asset that you create.
ye im in there just dont see the mapping thing
it's there
maybe i have to make it mappable somehow
there is Input Action, there is Input Mapping context
you need both
keep reading and attempt first
Not much you can do then. If replacing it from the autosaves doesn't work. 🤷♂️ Strongly recommend setting up a simple azure devops with git desktop for version control. Free and not that bad to work with. Alternatively a local P4 maybe.
Guys what's the purpose of the Game Instance if we can save and retrieve the data directly into / from files ?
It's just an object that is created and maintained with the life of the game. It makes more sense if you look at the C++ implementation of it. It maintains some global runtime state, and has some global delegates and such.
I'm good at reading unreal c++ 😬 is it more costly to look into a file compared to RAM and retrieve / write data in it?
HDDs are usually slower.
You never make a save and load system?
That said, GameInstance shouldn't really be holding a ton of data. You can load SaveGames, and keep their object alive to hold the data for you.
what bout modern SSDs or NVMEs, etc... ?
nope
Any sort of "hard drive", will always be slower than RAM access.
in the context of saving system, you want to keep reference to the save game object
game instance is one of the few object that is not affected by travel
isn't the save game object the Game Instance ?
nope
USaveGame is not UGameInstance
clicking doesn't work 👀
To re-iterate what Authaer says but simplified, GameInstance is an object that is created when you open the application and destroyed at the end of the application.
the life time is what makes the object a great place to store presistence values, such as reference to a save game object
but still doesn't answer my question regarding why not saving directly in the save game object, rather than using the Game Instance ?
You store the reference of the save game object in the game instance
how else will you access the same save game object if you did not store the reference in game instance?
all of others objects would be destroyed on hard travel
save them in a file and reload them on the new level ? 🤔
so creating another save game object? why?
why not point to the same save game object already created?
mhhh
Take two random numbers between 1 and 100 . Let's call them
A (higher number) and B (lower number).
Need an equation where A always= zero and B always equals 1.
Everything between A and B would be a decimal.
???
you have a node for that called "Random Float in Range" 👀
That doesn't solve the problem
wait your explaination doesn't make sense 😄 How can :
A = High Number and A = 0
B = Lower Number and B = 1
There's a contradiction here 😄
What are you trying to achieve, maybe we can help better this way 🙂
Anyone able to help me on this, I have this bind event being done in the Enemys Behavior Tree when they meet a obstical. I bind to the disptacher and then do the connected event.
My issue is it seems even though the distpacher is firing and I've checked everything is valid that connected custom event seems to not be firing
not really had this before
Running CE fired from a delegate in BT seems very shaddy to me...
would a create event be better
not that I've done much A.I but doesn't sound like what you are supposed to do
a BT should handle Task, procedurally imo
why would you intercept a BT ( if it's even running, could be running different task at any point) and run something from it.
probably best ask in #gameplay-ai
Ok.....
I have a temp system in my game... At colder temps things happen(1) at Warner temps things don't happen (0).
I want to be able to set the temperature range with math that always ends in an answer between zero and one (no matter what the temp range is)
between zero and one or ZERO and ONE
between zero and one means you want to take the floaing values
so why can't you use random float in range 0 - 1?
that will give you a value between 0 AND 1
Because I don't want the result to be random
Let's say at 60° your character doesn't chiver(0) and at 32 they chiver allot(1).
prob take like 3 days to get an answer as it seems people in there aren't the best at responsive, but to answer the other bit I need a callback from the object being interacted with so AI knows when can continue
Now, change 60 and 32 and see if you still get 0-1 result
Im just gonna answer the original question
if you have minimum value and max value, use map range clamped instead then round the output
how do i align a rotator to another rotator slowly at a specified rate?
cuz lerp works as a percentage ;-;
"map ranged" ..... Perfect!
Learning a new node today
Thank you!
I was trying to figure out how to do that with math
Reposting, because it got absolutely buries yesterday.
I am coming to you with a fun issue about collision on spline mesh components that are created in the constructions script. No matter where I set them to BlockAll (in the mesh spline node, separately after I spawned them all, etc), they still remain as ethereal beings. I found an old issue for UE4 marked as "Won't Fix", but I can't bring myself to believe, that something as simple as collision on spline meshes (that aren't even deformed) would not work or at least have a workaround.
did you understand his question ? Because I still don't 😄
I know that's unity but, the math would be the same
Luckily, we have a built in node to do it for us
How come this options string is returning false? What am I doing wrong with the syntax?
Ah, got it
Hey 🙂
I'm trying to create a flying ennemy, that can move in 3 Dimensions. My Parent Class is a "Character" Class. With a classic "Movement Component". I don't know how to figure it out. I've tried to set "Default Land Movement" to "Flying", but it doesnt work.
My goal is to use a Behavior Tree, and use the "Move To" Task. Is that possible for a flying unit ?
Also I tried creating a "Pawn" Class instead, to add a FloatingPawnMovement component, but if I use "add input vector" on EventTick, it ignores collisions.
Thanks !
maybe you want to use a curve of some sort?
the formula is just :
OldRange = (OldMax - OldMin)
NewRange = (NewMax - NewMin)
NewValue = (((OldValue - OldMin) * NewRange) / OldRange) + NewMin
Let's take for example 50 and you want the range to be between 0 and 3:
OldRange = (100 - 1) = 99
NewRange = (3 - 0) = 3
NewValue = (((50 - 1) * 3) / 99) + 0
NewValue = 1.4848484848
I'm not at my desk to try anything at the moment BUT, I believe that "remap range" is gonna do what I want
Hello so I have a puzzle mingame that generates switches in a 5x5 grid (uses 5x5 function that takes the transform location and scale of each switch to place on the interface). I built a 6x6 function and simply set the relative scale 3D of the box itself to be bigger but now the switch positions dont align with the new interface itself. Does anyone have any clue how to do it other than creating new transform variables for the 6x6 grid?
Rinterptoconstant
just lerp values to target over time?
Use Parse arguments, it supports switches and args as well
Can you send a screenshot of the appearance of the 5x5 grid and the 6x6?
here is the 5x5 grid compared to the 6x6
Hey guys, very basic query. How can I create something like this in blueprint? Single object being duplicated with an offset but with a fixed angle between all instances. I'm stuck figuring out the angle offset, as the new instance should be positioned at the end of the previous. Ultimately I want to expose the number count and the angle parameter and maybe the size of the source object ( which should maintain the relative offset ).
Yes. If the object is valid, then you should be able to just use the current best target. If it's not valid, then do something else.
Hello everyone, good evening.
Hello Datura!
I dont want to interrupt you, so dont mind if you are in a conversation.
I had a question.
I have a villager, and i have a tree standing in the nearby forest.
Now, imagine the villager has successfully harvested wood and brought it back to lumbercamp.
Now, he is empty again, and i want to send him to the very next nearby tree.
I assume that i have to compare world location and search for smallest vector.
but, doing that on all actors seems tedious.
Another approach could be a specific overlap on a big sphere, i guess;
but i already use overlap event to make villagers start fight or work, depending on type of other actor;
so that might not be compatible...
how would you compare the distance, to find the minimum, hence the next nearby tree?
or, would you think i should not follow this approach to check all these trees? or get a random one, instead of a for each loop?
could some sort of raytrace help?
math
okay, i think i am fine, i found a nice video 🙂
https://www.youtube.com/watch?v=aKzjNTadrAc
Hello Adriel! good evening
Length of location - location
thank you very much.
Hi all
My Actor is following a Spline.
How can I make it to rotate on X axis when it's not going straight forward ? Like an airplane for example
Maybe try the rotating movement component?
Not sure what do you mean "like an airplane" because X axis rotation would do barrel rolls
I mean like a bird for example. When a bird is rotating to the left (for example) he is rotating himself to left a bit, right ?
He is not parallel to the ground
