#blueprint
1 messages · Page 89 of 1
As a complete guess, I would say you're not actually doing the saving bit correctly. It might even be as simple as creating a new save game object and overriding the saved data with a blank one. Or you have everything using the same slot name which means different actors override the slot leaving incomplete data.
hang on, lemme look up at the project
the Create Save node might actually get fired more than once, lets see...
Anyone know what going on here?
I am making a game which loops a dungeon but after each loop I want to improve the health of the AI but the function triggers but none of the new skeletons get the health buff.
I just get error "Accessed none trying to read property Skele Ref" (Skele ref, meaning my AI)
NOTE: the function is being triggered the manager blueprint, where I activate most events.
here's the part where it saves into each slot the progress from each difficulty
make sure that reference node is updated
Sorry I don't understand? Like the variable isn't live?
the Skele Ref node may become Null after looping the level
which might explain why you get that error
how are you setting it?
oh I see, I don't know in truth. I just made a object reference from where one of the skeletons was spawned.
here's the level blueprint of the first level that creates all the save game slots
I should add all skeletons who get spawned to an array and then apply the health buff to the array?
you need "Get All Actors of Class" and promote the array input into a variable
Yep, I will give that a try
you can't just set the object reference manually
the game has to find it in the level
oh I see. Thanks for the advice, I will give it a try.
Many thanks, by adding these nodes in, the buffs work as in intended.
I don't think so, why? I mean yes for dealing damage and updating its variables but not in this blueprint.
you should be able to drag right out of the out actors, and do a foreach
the reference is kind of pointless unless you use it somewhere else
What if I want to use it after this? I have plans to give other buffs.
Or should I just repeat the code with the new buff?
i would get all actors anyways, i don't think that ref will be "live"
probably repeat the code if the amount of that class has changed
or you removed one, added something to the game
ah ok, I will remove it then and keep the BP a bit more streamline.
Thank you, good spot.
I have a custom gameplay tag source (ItemCategories, visible at top right), yet I cannot see any of it's tags. I have tried restarting the editor.
Will this produce the same float for both outputs?
i feal like it going to be two random numbers but idk
Check by having it print the results.
it will be different
@queen heron curious question. Why have it separated like this rather than in 1 save game slot
Any node without an input and output flow (aka a "pure" node) is recalculated every single time something asks for it
ok thanks
hey guys im using pawnsensing component how can i make it not able to se thru walls ?
Does it not create different save files depending on the slot names?
Pawnsensing is deprecated.
@dim agate oh so whats new then ?
Answering me with a question.
Thanks
AI Perception.
@dim agate ah okey, i never seen that 1 before ill take a look at it, but im my case using pawnsensing any way to make it no se thru walls ?
I haven't used pawnsensing so not sure but I think you're better off restarting with AI Perception anyway.
I think if you have hearing enabled it can make it seem like it's "spotting" you through a wall, when using pawnsensing.
aye but in this case im behind a cub and it sees me
but i guess doing own logic is fair
It does but it's not ideal having to create a new file just to store 1 var in it, especially when they can easily be put into a single save game object.
Stuff like your settings should really go in a single SGO, of which the slot name can just be settings.
Hi guys, I have a question, is there a tutorial or documentation for doing a remote control. Because my idea is to make the "UserWidget" commands on another device (e.g. mobile phone or tablet)
blueprint is not the place for that imo
you say it's more convenient in C++?
I don't think it's possible in blueprint unless someone wrote a plugin in cpp and expose it to bp
if there is someone doing it, I really doubt there is something specific like that in market place
that's a pretty vague question to begin with
you can do some network stuff with BP only tho
Unreal Replication system and Http request only right?
not sure if there's something else on the menu
and UDP with an actor for the UDP connection
and probably there's also something for pure tcp
and there's websocket stuff, too (which kinda is tcp after all, just not raw)
Hey gang, I'm seeing weird results spawning an actor with a Transform set from saved data, which I saved using Get Actor Transform - it's coming out at spawn with a totally different rotation. I'm trying to debug and am seeming to find that when saving, I'm getting a Quaternion saved into the transform somehow (even though a Transform struct has a Rotator?)
Is there something I'm missing about the way that fetching a Transform works vs how it works when spawning?
Hey, I'm trying to detect any objects above my character's head and below my character's feet using a sphere collider, but I wanted to know what is the best way to store those detected objects, in a set, array, or a map?
i'm a big fan of arrays
I was messing around with a Lightsource that was attached to my Player character blueprint, I was just kind of flipping things on to see what they did and I changed the movability to 'Static' and as you would probably guess I wasnt able to move anymore so I changed it back but when I pressed play again my character blueprint was completely broken with an warning reading "CollisionCylinder has to be 'Movable' if you'd like to move it with CharacterMovementComponent" except the Collision Cylinder was set to Movable and now for some reason my camera is displaced to the coordinates of 0,0,0 of the world space but in the Blueprint it was still using the relative location of the Capsule.
Has anyone else Encountered something like this? if so help would be appreciated.
you get the warning when you try to move something that is not set to "moveable". Try to show your CollisionCylinder mobility
if that's already set to moveable, look for any Instance of the class in the world. Then make sure that they are also not set to static
It is Set to Movable along with the ones in the the world.
I did google search it and the only related results were from a few years ago that just said it was a bug that should have been fixed with 5.1
They also said to fix it they had to copy and paste their stuff into a new Character BP which I can definitely do but if there are any shorthand fixes I'd rather try that first.
I am not aware of such bug or have ever encounter one. If you already set the class to moveable along with the instance placed on the editor, then I have no more clue. Hopefully someone else know
Its fine thanks for the Input anyways.
mobility just... sucks
so many weird quirks
and bugs
but are you placing the player manually?
or spawning via Player Start?
I tried both and both are the same
I’ll just remake the character BP when I sit down to work on it again.
I now know not to ever fuck around with Mobility ever again.
So I have a system in place that works as such: enemies will enter a takedown state, and you hit the takedown key while aiming you throw them to the ground, pin them, and are able to shoot other enemies while they are pinned. Releasing the aim key causes you to automatically finish them off. My problem is that the animation extends out of the capsule, and thus the camera boom is displaced from the character leading to the character being either on the left or right of the screen depending on the direction you aim. I've tried messing with socket and target offsets, actual boom position, and switching to using root motion, but nothing seems to be working. Any ideas?
(Let me see if I can get a vid real quick)
soo, this is a bit weird
the triggered wire goes where it should depending on the boolean's value
but for some reason, walk speed is run speed and run speed is walk speed
walk speed is 200 and run speed is 700
and I even set the default max walk speed to walk speed float at the event begin play
not saying it's the solution but root motion should drive your capsule (assuming the root is animated)
Normally it does, but since the animations are paired root motion causes the two to desync
issue is now fixed, I removed the variables from the Current output and put "Get Max Walk Speed" from the character movement instead
I still don't see why was that happening tho 🤔
looks pretty good apart from the camera position. What if you make the collision bigger instead when doing take down? because the transition looks pretty smooth already.
didnt think of that!
hmmm doesnt seem to affect anything
Attaching it to the root bone almost works, but it still feels icky (+ theres some funky fresh jitter)
how are you pairing your animations
we call it syncing
and it doesn't really affect anything besides the fact that the slave is synced to the master's animation
I have a point attached to the player character that the enemy is warped to with the correct rotation
Then both are played simultaneously
Does anyone know why my scope would attach like this when both the attach socket and the mesh itself are 0 on any axis for rotation? If I don't attach to the socket the orientation is fine. But the socket is 0,0,0 in the last pic so why would it end up rotating it?
If I don't attach to socket, you can see the scope works just fine. I don't understand why the socket rotation is off even though it's all 0
so the issue is that the camera stays in place when you play montage ?
Yes, and root motion borks everything it seems so Im trying to find an alternative
a montage is not meant for gameplay animations
well
it might work
but i would expect it to have issues exactly like this
i think playing a montage is more like playing a static animation on your character mesh but does it actually move your entire actor root
because the camera should be a parent of that
It only does if you have root motion enabled on your montages. I use that quite a bit for dodge and non-cancellable attacks with forward movement (a-la darksouls)
does that fix your issu
a synced attacked will not be cancellable
unless if you break out of the montage but then you have to deal with transitions
if you would implement a normal swiping attack with a single actor would you also do it as a montage
Oh yeah its not, my b I was ramblin about stuff that doesnt apply rn
Yeah, thats how I implemented punches
Is “Ultra Dynamic Sky” the best sky and weather in the Unreal Engine 5, or is there another, better package?
if that animation would rotate and move your character mesh from the root position wouldn't you have the same issue that the camera would end up in a different location after playing the attack
Though those all use rootmotion
No, the player returns to the initial location
or just author your synced animation like that
Is “Ultra Dynamic Sky” the best sky and weather in the Unreal Engine 5, or is there another, better package?
reading the #rules and not crossposting is pretty good
though I havent heard of anyone talking about anything better than UDS
It's a very highly reccomended procduct
Ok thanks 👍
What product do you recommend for forestry?
none
hey, is there a way to disable capsule rotation during root motion as I'm only interested in translations
What about Brushify - Forest Pack?
It helps a bit, but theres still a bit of an offset. Also causes jitter when aiming to the right for some reason
It seems that I cant get the "SkeletalMesh" component as a child of the root component when the construction script is executed in editor. I can get the rest since they're from C++. Is there any way at all be able to get the SkeletalMesh from the Root Component?
my skeleton root has zero rotations but the capsule component rotates a bit when I play the animation as if to adjust to the overall animation. isn't it supposed follow the root 100% ?
wdym?
just drag and drop skeletal mesh to construction script?
this is for an internal tool, there could be multiple skeletal meshes, I want the script to be able to just detect how many there are and go on from there
what's the actual goal here, you want to get all the skeletal mesh in the bp?
yes, but specifically while in the blueprint editor
@minor pasture
that will only return components that are created in C++ when run in the constructor script on compile
Oh Constructor?
thought you write Construction script
well constructor runs before the game even runs
oops yea construction script
You want to ref your BP skeletal mesh component in your C++?
This is how I get ref of bp comps in my cpp.
I declare the comp in c++ but it's not set.
It get set in the construction script in the bp class
if I get what you mean
root's getting fractional values on export yikes 😬
does it work when you just press compile?
this
Oh yeah, it works
like why wouldn't it get your BP comp? there's no reason that it won't
because you're using finterps wrong. The current value should be the player's current max walk speed, not the variables you put
yeah.... learned that lesson.... get current value of what you're setting, not what you've prepared
hi!
is there any way to get the screen size in PX of a widget?
Lezgo gamer I found an incredibly scuffed solution where I constantly update the socket offset of the camera based on the camera's yaw😎
if it works it works
Is the EColorVisionDeficiency defined as a BlueprintType?
Or can you not create Blueprint variables as that type?
Good afternoon, I really need some help. I want to create a single widget that displays details about the items a character interacts with. The problem is that I can't change the images in the widget, because the image variable that I have set as the image doesn't allow me to load anything from the actor into it.
When I switched to my second character, my on-screen button did not work for the second character, but when I switched back to the first character, it worked.
What type is that spider man reference?
Hello! Is there a way to make this somehow work? I want to Set each button with the corresponding name, but from what I understand It won't work this way as "for each loop" executes until it finishes.
use the Completed pin, not a sequence?
I'm trying to dynamically set a rest collection on a GeometryCollection component in a blueprint actor and the mesh doesn't show up, even though it returns the correct asset name when logging as shown. I've seen others with this issue like in here: https://forums.unrealengine.com/t/dynamically-set-geometry-collection-chaos-physics-values/509907/9
Works fine if I set the rest collection in the component manually. Anyone have any ideas?
Doesn't completed fire when the whole loop is finished? Wouldn't I have the button names set to none?
what are you trying to accomplish?
I want to get a reference to a button from one array, and assign to it a name from another array
it looks like you want to set the name for each of those info boxes, instead of the 2nd for each loop drag out from your Names list a get node
Nice! That worked
and make the array of Text type instead of Name type and you won't have to convert them
Didn't see the answer but the previous message helped 😄 Thank you very much.
I'm trying to apply some fixed knockback to my enemy actor, so I'm using a timeline and set actor location with some vectors to accomplish it. The issue I was running into was I wanted the actor to get knocked back through a group of the same actor (for a horde shooter), but they would sometimes clip into walls and get stuck. So I set Sweep to true, and they no longer clip into walls but now they don't go through the other actors. I ended up with something like the image below which has the actor move through the other actors but it still sometimes gets stuck in walls. Is there any better solution for this?
this is how it looks in practice, as you can see the enemies sometimes clip into the walls
I feel like using a timeline for this is a bit like looking for trouble because it will keep moving your actor independently of anything else. Perhaps Launch Character would be better suited for this. In any case, to allow the hit enemy to not be blocked by other enemies you could play around with collision profiles instead of changing collision settings: during the push back you could temporarily set a collision profile that ignores only pawns.
I tried to work with the collision channels but they always seem to still collide with other actors no matter what I changed. I'm using the timeline mostly because a physics based knockback using Launch Character just never seemed to produce a stable, consistent result
but it's possible I just don't know how to best use it
flipped normals
Also I'm realizing that by setting the collision to physics only, Sweeps are no longer enabled, making checking that setting useless
wdym
Doing it with a collision profile should work but it would require adding a custom profile also to the other enemies now that I think of it, else they will still collide
faces are wrong side
how to fix
also u can enable the normals facing mode in blender settings somewhere
one of those tooltip things in blue on right top corner
then it will show you what dir the faces are pointing
by default blender shows double sided material as its default mesh view
ofc, you could just enable double sided in unreal material to fix that but I think it will not apply well in all situations.
About launch character I know what you mean and thats kind of the point of it: you let physics handle the collision for you. Having a timeline means that no matter what is in between your start and end position, the enemy will still forcefully be pushed back. But maybe that's fine for your game, so I would first and anyway try to solve the collision issue
Was just doing some research and found this
https://docs.unrealengine.com/5.3/en-US/BlueprintAPI/Collision/IgnoreActorwhenMoving/
Maybe worth a try
Yeah for this particularly game mechanic, I wanted it to be consistent knockback that moves through other actors but doesn't go through walls
I'll try that!
Thing is, you'll have to most likely set this also on the other enemies, just like you would have to do with the collision profile
My latest forum post after a while:
https://forums.unrealengine.com/t/traditional-rpg-random-enemy-encounters-ue-5-3/1677390
What are some efficient ways to generate random enemy encounters on particular maps? Right now, I have one huge trigger box covering the floor of a default map (since I’m just experimenting for now). I have placed a collision box around each foot on the player character and I have the following blueprint (though it doesn’t work unless the box i...
you beautiful genius!
this worked like a charm
I have a system to place a decal at the endpoint of a projectile path, but it doesn't seem terribly accurate. I can verify the projectile prediction is perfect (the white line), but the decal seems to "snap" to certain positions without closely following the given location. You can see here the difference between the red ball where the projectile landed and the decal. It's not consistently off in any one direction, the inaccuracy will vary. Any ideas?
(@scarlet root wanted a look at this convo)
how can i access properties of a child actor component in the parent component event graph?
The component should have a "get child actor" node, or similar
I can get you the exact name in a sec if needed
Yeah it's a blue oval node, just like grabbing any other variable
I know this is probably asked often, but where can I find a good resource for learning UE5 BP as a near complete beginner? My boyfriend sent me SmartPoly but then criticized him for using casting instead of interfaces and like 10x more for not being efficient etc, I'm really trying to find something that teaches Blueprint and not just specific "how to open a door using inefficient casting" tutorials (but having those in there as well is good)
casting is by no means inefficient
Realistically, casting is fine as long as you're not doing it repeatedly, like on tick or something
but the best beginner resource is in the pins of #ue5-general
even casting on tick is perfectly fine
it is not an expensive node
it just gets heavy in memory cost if you cast to an unloaded class that contains asset references
ah
as you may have guessed from the above, having a base class with no asset references, but the code you need can virtually nullify this
Interfaces are the good one when you need to decouple things, the behaviour isn't reusable enough for a component, and the functionality needs to apply to a range of base classes
for instance, interaction
He said using interfaces is typically more efficient and better because you can call to a specific part of a blueprint, but also have a section in your character BP that is for something like, "press F to interact" and then call to that using line tracing
While smart poly had you setup an F key and cast for each individual BP
And he said "If you have a blueprint for example that's really large, and then you cast to it, it has to load it again each time your interact with it and make your game lag"
that's not true
that load only ever happens once, if the class is unloaded, and remains for the duration of the play session
granted using casts is bad for interaction systems, but for a different reason
When should you use casts vs interfaces? I know like, for something similar to "press F to interact" is better with interfaces
This is the code he was criticizing
The highlighted stuff I did myself
casts are great when it can feasibly hit in your inheritance structure. Take a weapon for example, you could have a base weapon with a function called attack, and then implement it on your subclasses. Then to make your weapon attack, you may just cast to the base class and call the function.
Interfaces are good when you don't have that hierarchy. An interaction could feasibly apply to a weapon base, an NPC, a container, a vending machine, a door, a window, a vehicle etc.
An interface is better in this instance as it doesn't care what the class is
So like, creating a base attack function, and then casting to that blueprint and multiplying damage etc based on the specific weapon?
sort of, though your weapons could just handle this themselves
Could you not also do that with interfaces?
you could but there is little point
it's more work, for something less efficient
an interface can replace a cast anywhere you want. It just shouldn't
Why is there so much discourse with using casting? I see they have a bad rep of them creating hard references (which I don't really know what that means in terms of performance)
It means nothing for you, don’t worry about it until it becomes a problem
But you can see why this creates a block when trying to begin learning because x person says cast, z person says don't cast and use interface, and it's hard I guess to find a good point to start and which references are good or inefficient or true about it
The bad rep happens because nearly all of the people creating the tutorials are beginners, and have no clue what they're on about, or how to spot the bad in what they know
There's 0 barrier to entry to post a tutorial on YouTube
so this leads to popular myths circulating and circulating
Premature optimization is your enemy and the cast perf impact is overstated. If and when you get to the point of it becoming a problem, which you will determine through actual profiling rather than guessing, you can refactor your code as needed
Aside from perf hit, casting usually hints at bad design
Hard refs can very much be a problem, when they're referencing assets. Assets are heavy. You still get the hard ref problem otherwise, but it's effects are negligable, as you're loading some extremely light things
Typically if you find yourself using a cast chain, it can be a good interface candidate. Instead of going cast to door, no, cast to chest, no, cast to player, it is a good candidate for an interface call.
Soft refs are another way to avoid the hard ref thing. If my blueprint needs to choose from 4 meshes for something, but only ever uses 1, a soft ref ensures that the only one that is loaded is the one I want at the time.
Not at all, both of those things are categorically false
hmm
It all depends, there is some use for casting but yeah simple "tasks" would be interfaced
I disagree.
While you can use it and there are cases where it is necessary, most of the time (and what you will end up finding in those types of tutorial) the data is not injected as a dependency. If you use composition with Actor Components or indirection via BPI, you shouldn't need to do that
You can't fight an engine that was built on OOP
Inheritance and casting is fine when you use it where you're meant to
yes exactly
You obviously should put reusable behaviours in components and use interfaces for class agnostic behaviour
👍
But when you've got something limited to a certain type of something, it's a perfect candidate for an inheritancy chain
(though don't go too mad with that, also for performance reasons)
(super deep inheritance trees for the sake of it slow down a GetActorOfClass tenfold)
What do you mean by an inheritance chain? What would be an example of this when using casting?
Yeah if you know factually that a function will only ever interact with one kind of object, casting is fine. There's nothing to be agnostic about.
parent bp which has child and that child has another child an so on ->
So basically going something like Weapon_base, Weapon_rifle_base, Weapon_SniperRifle_Base, Weapon_SniperRifle_50cal_base, etc. etc.
indirection for the point of indirection is pointless
I've noticed more I use unreal engine, the less I cast 😄
I noticed the more I use the engine, the less BP i use :P
that is just awesome
Very true
i cast like crazy, still have not learned interface yet
c++ has only entered my picture last year 😛
There's not much to learn, just read the official doc page on interfaces and you'll know how they work.
Yeah thats a good way to do it
yeah even default unreal template bps do that
casting on tick wouldn't be bad anyways
"Casting once or every frame don't make any difference. Casting in bp loads the object into memory already (because of the hard ref). If the object are already loaded then there is no more price to pay.
Tick is bad or Casting is bad are myths from youtubers. Check the pinned article of this channel "
great because i use it all the time, and the performance isn't bad
So I'm watching a video by Reids Channel and what he says is that you want to use casting whenever you are having code only interact with something within a hierarchy, but to use interfaces when you want that functionality to be able to interact with things outside of a specific hierarchy, for example if you want to make it so that a projectile recolors only furniture, you would use casting, but if you wanted to be able to recolor furiture, pawns, etc to use interfaces
But the question I have is that like, in what kinds of cases would you want a functionality only to be limited to a certain hierarchy?
For example making an attack function for your weapon, wouldn't it be better to have an interface for damage instead so that you could create a variety of functions for damage?
Like fire would be outside of the weapon hierarchy
(mind you i am a beginner so if something i say doesn't make sense or seems simple i am learning
)
an attack can end with an interface call
an attack doesn't mean damage though
your overriden attack on a sword means swing
your overridden attack on an RPG means shoot an explosive projectile
your overridden attack on a rifle means shoot a line trace
then you could use your damage interface on the thing you hit because damage is class agnostic, launching an attack isn't
pleaseee help
we can't help for everything... an entire car system is too big and complicated
In this tutorial you will learn how to rig a vehicle/car in blender and then setup the car blueprint and chaos vehicle physics in unreal engine 5.
This is a step by step tutorial on how to make cars in unreal engine 5.
UE5 Beginner Course ► https://pinkpockettv.gumroad.com/l/UE5CinematicEnvironmentsCourse
Get this project ► https://pinkpockett...
its a 15 minute video its very simple just the collision why are the wheels going through the ground
wheels rotate correctly the car moves corretly its just that the collision is scuffed
it’s very simple
lol
Collision can be quite complex, pun intended
It might not even be a collision issue. You might just need to raise the car’s mesh within its bp
How do I use the Z-pin for an Input Action? The swizzle modifier allows me to use the Y-pin, but is there a way to use Z?
Make sure that it's the type for 3d
It is
Do you have a separate input action for each direction.... Forward, right, up?
No, I know I could do it that way, but I it would be nice to have it all in one input action. Right now I have one input action for left right forward backward, but I want to add up and down.
Keyboard?
Yeah
So for up/down, I think it's swizzel zxy or the other one
Okay, I've done both and find it more free to have separate.
But you would choose swizzel modifier and then it gives the option with the modifier for the type.
Ah okay thanks.
Damn this got published in official learning site?
using player character too as example 💀
there are certainly good places where interface would make sense, though not alot of it..
🗿
Definitely but now I get where the Stop Casting myth articulates
Didnt you know that casting was bad
Which rock have you been hiding under lol
I invented the "Interface pattern ™️" to solve all casting issues forever
Hey, i want to create a train that follows a spline path, but from what I've seen, they often use the tick function to make the train follow the path. However, this cause performance issue. Is there a better way to make this?
Tick is the best way to do it
You want to update the train every frame
To make it look smooth while moving
this is not a answer my question
Tick as an event in itself doesnt cause performance issues
Its whats put on there
And if it needs to be there
Anything interpolating smoothly must be done on tick
The first question to answer is, do you want the thing following the spline to be in a different position every frame?
If the answer is yes, then it will be getting updated on some tick somewhere. If you don't need it to be updating all the time, just temporarily while the movement is happening over a predetermined amount of time, use a timeline.
Timeline is effectively a temporary tick with attached curves that can do things.
#blueprint message
gonna slap this here again and again..
Tick is perfectly fine and is 100% necessary for things that need to update per frame. That is pretty much the definition of tick, it is the thing that happens per frame.
When people say that using tick is bad, what they really mean is using tick for stuff that doesn't have any business being on tick is bad.
Position updates pretty much by definition want to be updated every frame
You could move the workload to the gpu but
Far less control
If its many many trains and carts youd probably benefit from aggregated tick
Thank you
It's only one or two train but it's multiplayer game and when i test it with tick on my level it's effect my fps already
it moves forward and backward but left or right only hop in place
Then you need to look at the logic used to update the train. Are you having to do a lot of calculations to work out its new position along the spline?
If its just a train and no carts that should be just about 2 vectors interpolating per train
Nothing that should chug performance
Use one launch node. Using two is redundant as you can just plug the Y into the first one.
ahh oky
Requesting assistance with the following: https://forums.unrealengine.com/t/creating-and-loading-a-game-save/1678158/2
What's the retriggerable delay for? Seems redundant as the update pin updates each tick when fired. (Also you should avoid tiny delays, I personally don't go less than 0.01)
assuming your PlayerPOS is correct, you want to use its location,
unless the location is always relative to CharacterRef, you dont have to transform it
thats custom event , retriggerable delay for making it like tick
Like tick is worse for performance than actual tick. 😉 Also, as I mentioned, the update on the timeline updates each tick anyway so what's the delay for? It looks redundant.
Hi, thanks for assisting! If I change it to the following, the effect is the same unfortunately
I will remove that and move all to tick function. One last question when I work on the project for more than a week, fps drops a lot. It gets fixed when I delete the save file. Is it normal for this to happen?
When you say the save file are you referring to saved game data?
yes
this saved
Oh the 'Saved' folder. It's hard to say but it could be large auto saves.
This is the Player POS btw (I've already tried moving it higher to no avail)
Thank you
i am
Hi there, is there a way to access CameraBoom's Enable Camera Rotation Lag via a blueprint?
Should be. Get a ref to the camera boom then type it
Pros and cons of game mode vs game instance for storing variables?
My understand is that game instance is for storing variables that persist between level loads, but don't really know benefits of game mode or game instance beyond that
does anybody know how do i make my player pawn appear on outliner when i press play?
ive tried various setting and filter, nothing works
does this happen on the latest update?
or is it just happening to me
ha, nice!
Send a screenshot of your player spawn point in the world and a screenshot of your game mode values.
guys why this set timer on event doesnt work on my AI it works at me but on placed AI not
😄
it doest not even execute LineTrace
can i set a blueprint actor for foliage?
is it just me?
And what about world settings?
It's not even about pros and cons. Their purpose is entirely different
If you need to store something in presistence object then game instance your only choice in bp
Game mode is per level basis
It's kinda easy to know what should goes where
If you have rules for the game ( eg round limit , etc ) then game mode is the place
World Settings is a Window option
So sounds like instance is a sublevel that stores stuff from itself between level changes? How do you tell instance to keep something between level changes?
okay i dont know which is relevant, so i just screenshot it all
i hope its the one youre looking for
Yea the game mode override there has your same lawn. Assuming you want pinventory4 as your player?
yes
Game instance is presistence object. It's created when you run your game before your level even open. It get destroyed at when you exit the game. Changing level doesn't affect game instance
game instance is more like a persistent object that exists from the start of the game to the quitting of the game
Ok and if you put print strings in pinventory4 begin play event, does it print?
so anything stored in it is kept untill the game is terminated
it's unwise to try and store references there unless they're also persistent(which they mostly will not be)
but anything else is fine
So game instance is not really about 3d or level management of the game, but more for storing variables between level changes.
yep
it does
it also has some built in stuff for network errors and travel errors ,
so the paint density is max why is it so not dense
Actor rules ?
wdym
scroll down a tad
on the left side menu
there should be specific density or similar there aswell
for each individual actor in the foliage painter
Looks like your character is in the screen there
there we go
what
to how much
ohh, i think u misunderstood my question, yes the character appears inside the game
but it doesnt appear in the outliner
here
Maybe someone else can help with this.. but post a screenshot of your world outliner with a search "pinv".
aww, okay2, but thank you for responding anyways
That is crazy.. bottom right of world outliner, do you have any filters set?
nope, i disable it all
does this happen to you? or is it happening to just me?
Sort of happens to me. I have a weird issue lately where my BP-character eye lid is closed in world outliner even though it is visible in the level.
From main viewport, If you press play, then f8, then click on your character, does it highlight/select in world outliner?
how do i apply collision to foliage
Check only selected for your filters in world outliner and try again?
omfg
its there
why is it not there by default
why is it yellow tho
any idea?
i think thats the one causing it to not appear
Yellow means the actor is spawned at run time
I think yellow is spawned stuff
The static mesh asset requires collision shapes, and the instanced static mesh foliage requires collision to be enabled
Collision should be enabled for all channels if collision preset is set to Block all iirc
haha okay2, thanks2 man, i didnt know about the f8 thingy
but thank you
much appreciate it
im trying to sculpt but there is this invisible thing in the air
yo how do i reset location to 0
You set the location to 0
Can find most of what you need by right clicking an empty space and type something relevant
Is there a way to get better debug information on errors?
depends on the error, if its in blueprint you can use blueprint debugger
Helloo, does anybody here know how I can remove a specific array element from a widget? (for example in a quest log, when the quest is completed I want to remove the quest from the quest log)
you can use the remove from parent node passing in the widget reference
break points? watch list
How can a pawn check if the path from it's current location to the target is valid?
Are you using NavMesh?
Yes.
I will check my code, sec
@grizzled roost 🍝 the highlighted area gets executed when path is not valid
That's all I needed to know, thank you so much!
Do tick and begin play get called on simulated proxies as well?
What's is the Tether Distance input by the way?
No idea, I never test
maybe i can look inside
Documentation doesn't say anything.
As long as it doesn't affect anything if left untouched it probably doesn't matter.
Let me know if you find anything.
@grizzled roost Real documentation is in the source code
Finds path instantly, in a FindPath Synchronously. Main advantage over FindPathToLocationSynchronously is that * the resulting path will automatically get updated if goal actor moves more than TetherDistance away from last path node * @param PathfindingContext could be one of following: NavigationData (like Navmesh actor), Pawn or Controller. This parameter determines parameters of specific pathfinding query */
No
everyone run their own begin play
But remember that they will have a copy of the character too, so when that character exist in ther machine, begin play will get called on their machine
Good point, I should read that more especially since I do know C++.
Does it say anything about the tether distance though?
Finds path instantly, in a FindPath Synchronously. Main advantage over FindPathToLocationSynchronously is that
* the resulting path will automatically get updated if goal actor moves more than TetherDistance away from last path node
* @param PathfindingContext could be one of following: NavigationData (like Navmesh actor), Pawn or Controller. This parameter determines parameters of specific pathfinding query */
you get the benefit of seeing how things are done, but in this case, the downside of seeing the AIModule code
heard it's atrocious, but I wouldn't know what's bad or good 😄
How the fuck did I miss that while reading it?
Oh well, that does answer my question.
Thanks again.
I have a widget_blueprint called "Buff" with a variable "stacksize". I want this to "hook" somehow to the PlayerBlueprint function of "get damaged" so that it reduces the stacksize of "buff".
Gameplay example:
Player presses 1 to get Armour buff and gets 200 armor with 5 stacks. Each time player gets hit the stack should go -1 and at 0 stacks the player loses said 200armor.
How do i do this "hook"? (I assume I need to do something on "EventConstruct" that makes the "LoseArmorStack" function "listen" to the "GetDamaged" function, but how? 😄 ) pls reply or tag in response 🙂 thanks
are you fammiliar with event dispatcher?
nope
well you can start learning them then, that's what you can use to hook things up
but i know where to find it LOL
aight,imma google and tag you if id be lost 😄
hi i have this simple code in which i have 6 transforms and i want to assign each of these transforms randomly to each of the output locations without it being ever repeated
Temp array -> random -> store random -> remove random from temp array
Continue untill array is empty
Repeat as desired
alternatively, make the array, shuffle it, and assign each element in order
Or that
what is the difference between shuffle and random
Flawless
Spyware your method is ofc easier
Less nodes -> less spaghetti-> less prone for errors 😄
would this work or am i missing something
your missing actually assigning the locations
that also won't work because there's no reference to it, so it gets forgotten
oh yeah im dumb
you may need to promote to variable
make this a function that is not pure, which returns the arrray
BP shuffle is annoying because it mutates the array in place and does not return a refernce to it, so your function needs to look like:
- Make the array as shown
- set that array to be a local variable in the function
- call shuffle on it
- return that local variable array
no point in thhat, Store your array as Squize Suggested
store first then you can shuffle
nono don't store. do it in a function. It seems very unlikely that you will ever need this array variable again, so you don't want it as a variable. you want it as a one time calculation.
functions ftw
of course if I were in charge, you'd be able to make graphspace level local variables and do this in a collapsed node instead of a function because its only going to be used once... >_>
id probably make a function that creates the array, shuffles it, then outputs six values you can just plug in, leave out the gets in the code.
Collapsed graph vs function...
I dislike collapsed graphs
Id do function all day long
i just been programming a long time, i'm used to functions and how they work
blueprint function library ftw
well the programmers says bp gonna be spaghetti either way
but I have spaghetti in both world
frankly thats because those programmers are bad programmers
the answer is collapsed nodes. it's always the answer. every singular task or calculation should be either a well named collapsed node if done once; or a function if done multiple times
makes sense to just used collapsed if it's just a one off
functions occupy the name space and get messy. You don't want a ton of functions. It's not the end of the world, but if something is only used in one part of the codebase, it's nice to have it be right there. The purpose of collapsing is to hide the implementation details so you can just read the top level descriptor of what it's doing.
I mean that's a function is too anyway. You just read the name
my bp looks like spaghetti sometimes but i learned to resuse variables instead of draggin from way away
helps clean up quite a bit
and i just try to keep my nodes looking clean for my own personal ability to see wtf is going on
yes, but then the function is there in your name space and auto complete. annoying. Collapsed nodes also help you with flow control.
very nice, including use of negative space to help inform whats happening under the hood.
well that's true
imo almost any use of branch aside from the most obvious should leverage something like this
made a function and stored all transforms in a variable what do i do in the event graph
- rename the function to something sensible
you want to return the shuffled array
^
bro's still on that...
and then (3), is transforms a local variable? If so, you need to add your details to make the intial values before they shuffled inside the function
hey man, folks are new
unless you meant me ranting about bp design >_>
i guess you don't need to return it if it's not local, if it's local you'll need to return it
but why even use the function now if the variable isn't local to the function, you have the array you can just shuffle and pull gets from it
the idea is after you shuffle it, you can pull out the indexes, 0,1,2 etc... and they will be randoms that don't repeat
thats the thing im not getting how do i add the input when there is no returning value from the shuffle and how do i return a value
you return the whole array
and then call get from the array to get element 0 then element 1 and so forth
the array shuffles in place
so you just drag from the array after you shuffle
you may ask yourself "why would it work like that? why wouldn't it return a shuffled copy of the array rather than changing it under the hood?" and you will not receive a good answer
and when you click on the function, you can set your inputs, outputs
@neon lion This is the difference btw.
The blue pin is AActor*
The Actor class is TSubClassOf<AActor>
There are functions and functions. Some will use whatever you pass them to generate a new value; others will change these values directly. Shuffle is an example of the latter.
Take a Sum function as an example. You can pass X and Y and it gives you back a Z with the result. It's an immutable operation.
But you can also pass X, Y and Z, and make Sum apply the result into the variable Z you're passing. It's a mutable operation.
But whatever - your problem right now is not with Blueprints or Unreal Engine, but with programming in general. I'd say you'd make a better use of your time if you shift your attention trying to learn the very basics of programming rather than Unreal specifics.
i have this here but its not taking in any value
has anyone combined triplanar projection with cell bombing? for me it looks good on the material editor but the landscape is a flat color .....
thank you ❤️
Click the Return Node node and in the Details Panel on the right you're going to see some things that allow you to add Output Values.
done
drag the shuffled array into it
yep
looks good so long as new var is populated with the right starting options
@lofty rapids That's why you have more performance in cpp lol
give things names
well big loops in general just break bp
Is there even one single case where you can pass refs in Blueprints and expect it to work properly?
hmm, interesting
I think so, never tried tho
sometime I see the window and there is a check box that says pass by ref
this is actually not true
how do i convert the array to single values
passing by ref is usually more expensive
drag out from the array and call "Get (a copy)"
to elaborate, passing by reference means that you need to need to look up the reference for every operation. this is much more painful than just passing the value unless the value is very large. You should NOT try to pass by ref unless you have to.
doesnt look optimized but this should work right
The pointer can be cached though
in theory, if your values are correct, any reason you just didn't hook up zero ?
For each loop
Again: save you some time and read some programming basics
Why not?
first time i hear pass by ref is usually more expensive
its only "more expensive" when the data type is less than 8 byte,
looking up, every operation also needs to look up, your cpu work with nothing if it pass by copy? lmao
like this
it is perfectly fine from an optimization perspective. don't do the loop
i see
i mean to clean it up you could put the actors in an array and use the index in a loop
eureka it worked
but the gets are probably fine
Why an Array then
Don't understand you Blueprints people
From a spaghetti perspective you can promote the element to a var and clean it up if you want. Or at least use redirectors
so they can shuffle a set of numbers and get them all in a random order
when working with bp, the real reason to determine whether its by copy or by ref is if you want any changes to propogate back to the original, thats it.
@dull dawn
Then don’t come to this channel 😛
what feels odd is that you're writing 6 assignments manually. if you needed to ever do a different number of assignments then it would need to be abstracted into sokmething different
Ok NeoExcidious
select node, something i have not used much
Once I know it, I used it a lot
you'll usually only need to do such stuff for setups
spaghetti maxi
What's the relation, though?
its time to touch grass
nice imma follow that
It probably is
it usually is for primitive stuff. cheaper to pass an int than a reference to an int. Also generally safer. You shouldn't be mutating an int in place.
i learnt a lot today thankyou all so much 😊
what about string tho?
well I personally don't account to performance when I am still a beginner but when I am passing my Inventories or other big component, I will deffinitly pass it by ref whenever possible
if it's just the lightweight primitive comp then I wouldn't care
not sure off the top of my head; but my larger point was that passing by value is definitely not going to be the bottleneck of your performance.
loops just break bp
because if it doesn't finish in a certain time
it says infinite
really?
lol
how much time...?
I have never encountered that. It sounds like its probably a pretty safe rule actually?
He is going over the limit
like, way, way too long
there is a number you can set in project setting
it really comes down whether if you need any changes back to the source
in c++ atleast, theres usually 2 ideas when it comes to looping an array of larger data type size, for example
for(auto& Item : Array) or for(const auto& Item : Array), they are both by reference, but if you dont need changes you can use the const version
yea like 10k by default if im not mistaken
also long processing wont cause infinite loop
repeatedly calling the same function does
how to make it pure read only?
const auto& const Item?
loops are just a lot slower in bp as well
The for each loop function is made to run in one tick
const auto& Item this is fine for types that are larger than 8 byte, if its smaller than 8 byte, and you dont need the change propogation, then just copy it.
and in c++ it doesn't time out, it just takes longer
Well bp is about 10x slower so yeah
Ava they prly didn’t restrict the cpp one to 1 tick
also, in VS2022 you can check a type's size, im sure rider has it.
right so generating 50000 for instance i can just wait for it, but in bp it breaks
honestly i generate about 10 for a level
100 for a long level
but the idea is that i can if needed generate larger ones
and i tested the large size just to see the performance
just a, so i can if i want kind of thing
Can you please tell me how to configure the variable vector? I get data in BP character and I want to use this data in BP actor. What should I put in the Target node? Or how should I configure the variable so it can be used in other blueprints
well for one thing your execution isn't hooked up to the set
but you can cast to the player character on begin play
then use the reference on tick
How do I detect if a player is a meter away from an object?
i mean calculate the distance ?
i think unreal is in cm
if you can have a reference to the BP_YLW_Spirit in BP_PlayerController you can straight away set its actor location
I don't really wannna do it this way tho
adding a collision box is the last thing you want to do for an actor that moves
its worse than ticking trace
only use it if you have absolutely no choice
DistanceTo node?
I'm unclear what else you would propose to detect nearby objects.
1uu == 1cm iirc
The function
I suppose it's ok if there's exactly one player
called on tick? Is that really more performant than having a collision box?
could elaborate abit more on the use case? enemy detecing player? healing area? explosion aoe damage?
Idk, is he using it on tick or is it called at a certain point 🤷♂️
No, I can't
fair enough. I made assumptions.
hmm, ok
i'm saying thats one way to get the variable cast
but i would cast on begin play, and use the reference
if you can't because it doesn't have begin play ?
the reason why collision box is the least performant, is when the actor moves, you have to :-
- Update Scene Location, to move the collision box
- Update Scene Collision, trace and check if there is an overlap event,
- When other actor moves, it has to check whether it has overlapped this collision
but is that worse than checking overlaps in a sphere every tick with a spheretracecast or something?
what's wrong with casting on tick?
i don't think it's a problem, i'm just saying it would be better to use the reference from begin play imo
I could imagine some of the things you listed having some time saving cache under the hood, but I have no idea how its implemented
i meant like a raycast or whatever they call it here. trace?
Oh, I thought casting classes.
I heard from Adriel that raycast is pretty cheap
I may have misunderstood you. But?
do it on tick no prob
nothing wrong with it per se, just checking for a thing to happen every tick is intrinsically is worse than react to an event. I'm not clear about the internals here and what compares. My gut says a stationary collision boundary should be faster than a trace every tick?
@frosty heron Interestingly enough, the IsValid node didn't give me the result I wanted, but the IsPartial node did.
I didn't even know that node even existed, or what it even does.
well for one thing you want the bp the variable is located in not playerstart
that is correct if your actor doesnt move, and the size of the collision is small enough, not otherwise
I can't remember, it's been long time since I used it.
But for my case I can't accept Partial path.
The A.I will still try to reach me when I am on underground level. So the A.I just got stuck on the roof
Kinda did both checks, If Is Valid (True) if IsPartial (false)
it works. Thank you for explaining.
Had to put a NOT node in front of IsPartial because it works in reverse for some reason, but it works, unlike IsValid which only worked if the player was outside the Navmesh entirely.
can you say more?
hopefully your not crossing beginplay and event tick like in this picture ?
yep
collision(primitive component) is a scenecomponent, whenever the actor transform is update, you will have to update the scene component's transform. for collisions, when their transform is updated, it does a trace check for overlaps/blocking. Movement on the other hand is a ticked operation, so when for example, the player moves, the capsule collision is updated and tracing whenever it's moving.
there is also another cost that when other collision moves, it has to check for surrounding collision, more collision in the area = more checks.
the more object/trace channels you have, the more heavy this operation will gets
does it have some sort of caching such that it only needs to check reasonably close collissions? or is actualyl a global search
this is the part i have not confirmed yet, but logically, it should be global
hmm interesting
why do you say more channels == heavier operation though?
shouldn't more channels effectively add filters to allow for fewer trace checks?
yo
@cobalt gulch You Load and set the save game object Once, that's it
e.g. if you're tracing something that applies to only 5% of actors, then checks are reduced 95%?
don't call Load From Slot ever again after loading
hi, how can i detect if an actor is rotating to the left or right from this?
you will bring forth a new Save Game object and it's not the same as what you load previously
@cobalt gulch gotta see everything again
Everything including thhe save and Load function
possibly using dot product of the right vector
how can I only do this once?
Show me all the function. Save Load, etc
I will try to correct it if I can
in collisions, it would have to check for each channels and object type in the first place
okay thanks ill give it a shot!
Init and Load is fine
never tried it but dot product will tell you if it's in the same director or opposite with + - numbers, idk much about it but it seems to work out
but it would do that before checking if the geometry collides, which is more expensive presumably. So channels shouldn't be "increasing" the cost of doing a trace.
hello everyone, could anyone help me figure out animation blending? i am new to unreal engine. i have a created a working locomotion system walk-run-sprint-dodge and want to incorporate attack animations. problem is after i blended my attack animation to the upper body of my skeleton my character no longer moves without the attack button being pressed. any help?
@cobalt gulch
attacking is not something you do with a blend. attacking is a montage.
I dont wanna know if the actor is facing the other, I want to know whether it is turning left or right
i am sorry, i created a montage for the attack anim
think of montages as one time discrete actions, and blending and animation graph stuff as a recurring state
I can't get the mouse sens variable from the save ref
you can just check for positive/negative from the delta rotator
nvm i have to cast right?
you probably want to cast, then promote to variable, instead of setting the variable and then casting, or you'll have to cast again
Show me your Save Game Object, it should contain the float variable to store the mouse sensitivy value
you rigged up the slot in the anim graph?
something like this right?
depend on the type of Save, I can't tell w/o looking at it
Ok wait, this is wrong
honestly would be cleaner to create a dedicated GetSaveGame func that'd handle all the casting and loading for you.
i created an "UpperBody" slot for the attack and kept the default for the legs
Chhange Save variable to TheDropperSaveGame type
When you load, Load from Game slot -> Get thhe return value -> Cast to TheDropper Save game -> Set save to it
you could just use CompareFloat
sounds good so far. show your anim graph where you pipe it in
And also set the slot in the respective montage asset?
oke
No
You are setting the value to it self
what you want to do is to get the value from your game instance
Get Mouse Sensitivity in GI -> Plug it to Save's Mouse sensitivity
cast
Don't forget to set Save
save after load?
you should add prefix to make variables easier to read. eg BP_DropperSaveGame
this is what i got from the tutorial i watched on anim montages
ah it doesnt work, it's not loading/saving
yes
spine_01
gotta see everything again
ill explain
that is for the full body slot usually
@cobalt gulch The slider?
You still haven't fix this btw
make sure montage is set to play in upperbody slot too
still setting the value to it self
Ok , try to understand what you are doing here.
You are setting the Mouse Value in GI right?
So now what u want to do is to get the Mouse value in GI to the Save Game Object
so i followed a tutorial on locomotion for root motion. i set up the blend space and animation blueprint like he did and all was working fine, here is how it looked when working 100%
Fix this one
got it! missed that aha
u are already in GI right?
no need to get and cast
just get the value right away
Test it anyway
but the tutorial i watched on animation montaging just did so on top of the 3rd person template project, so i didnt know what i need to link exactly in the animation blueprint
Yep it works!
how does he change the mouse sensitivity? is it just the user input mapping?
There is one problem though, whenver the game is reopened and the sens was changed previously on a different save the slider defaults to a sens of 1 instead of whatever it should be on
That's what I was gonna say about the visual part lol
see here it should be on the very left of the slider, instead of where it is
you never tell the widget to update the value on load
and then load it when reopening the tab
simply setting the float not gonna magically change your slider value
widget on construct, get the value from GI, set the slider value
You can load it anytime, just know your flow
I do not know what is in your locomotion and dash animgraphs, BUT I dont think its relevant.... montage "interrupts" the main animation graph. Layered blend per bone is like a mask for the skeleton. How is the montage being called, in what bp, how is it setup?
well, creating a widget every single time is so bad
@cobalt gulch #blueprint message
gotta give context
you should hide it not creating it every time
I have widgets that need to be added and removed at run time
hello there!!
need little help
i have a button BP that has a State Boolean and ive made an interface to connect it to another BP That checks the state of the button if active by printing hello world but its not working
what would you like me to show you?
something like your Inventory menu, can be toggled I agree
yes please, dont keep creating widgets, removing from parent and keeping the reference is good
this?
Pre-Construct and Construct are called when the widget is added to the viewport/playerscreen
Trigered Run every frame, use started instead
That will work
illl try that
so you want to update your slider on there (open)
Cool, glad its simple..ya never know... lol, lets take this to #animation channel, more appropraite
ok
construct = the node called: create widget...
triggered only runs every frame if your trigger type is Down
construct calls on adding to viewport, aka when the SWidget is actually being created
im saying you should keep the widget reference alive even if its removed from parent, and use the same widget object to add to viewport again when you need it
collapsing and setting to whatever visiblity is fine, but you would need to implement your own "init" functions
and its literally the same, and removing and adding
when it comes to redraw cost
if you remove it from parent, it's going to be completly deleted, I don't think you can work with it again
only if you did not keep the object refence to the widget
it's going to give you an error if you try to use it
no it does not
Nope, go try it. Get the ref to the widget and add to viewport again
widget comes in 2 parts
UWidget and SWidget
you want to keep the UWidget alive, by keeping the reference after you call CreateWidget, here is when Initialize is called
when you call AddToViewport, SWidget is only created, thus Construct is called
and when you call RemoveFromParent, only the SWidget is destroyed
then why when I remove from parent a widget and try to use it again, it gives me an error and I must add a check if the reference is valid
the UWidget is only destroyed if you dont have a hard reference to it
can't see what you actually do. But I can remove and add anytime no problem
ive made something like this
need little help
i have a button BP that has a State Boolean and ive made an interface to connect it to another BP That checks the state of the button if active by printing hello world but its not working
can someone tell me why this isn't working
The actor that it overlap with is not of type Baby_Blueprint
or the overlap never happend
print string other actor before the cast, make sure the Event is executed
ugh... found it i didn't enable generate overlap events
@trim matrix
does it 'cost' a lot doing that?
You won't lose a frame imo but I never test
better than creating new widget again
I have a question regarding copy pasting a blueprint node Export Level Sequence FBX on blueprint parent class Actor, but i am getting error it couldnt be pasted. Using UE5.2 and I am following this tutorial: https://dev.epicgames.com/community/learning/tutorials/r2RD/unreal-engine-sequencer-scripting-foundations and im referring to Importing and Exporting from Sequencer through FBX.
I have never thought about that, so basically you are creating the widget 1 single time, and then adding it/removing it whenver you want. Is that correct?
for sure
No, I create the widget once when it's not valid
then afterward I just toggled betwen remove from parent and Add to viewport
but it's never not valid? just the first time
okk
it's pretty much creating it one time, once it's created it's in the ref so it's valid
i usually put the reference in the HUD
so that i can access it from anywhere np
even if you remove from parent, it never delete the widget. You can still access anything from it, as the object is still there
to properly "delete" widget, you need to remove it from parent then set the ref to null
when the widget is unreachable it will be garbage collected
Hi folks i'm not sure if this is the correct channel but how can I display an animated material inside the widget?
a UImage can accept a Material that has a domain of User Interface, if that is what you need..
How can I use one of these premade materials within the ui? It doesn't seem to work properly for me
stoping a reference doesn't work... bruh
The material must be User Interface domain. If you need to see reference of UI Materials, I suggest to download UI Material Lab from Sample Project
how do i stop a sound though
You can make audio component in the BP then store a reference to it.
When you want to stop the sound, you get the audio comp variable -> Stop
Does anyone know why setting the input key selector style during runtime makes it invisible no matter what the settings are, and then causes the game to crash when clicked? I tried to set the text style and that works just fine.
this is the default chaos vehicle template, this only makes me able to look left-right, ive tried also adding to the input mapping context the desired mouse rotations and doesnt matter what i try, i cant figure out how to make the camera look all directions, sames as a racing game camera would do
if change the last one from "axis1d" to "axis2d" it doesnt like it, this is the error i've been facing
maybe refresh, but what does the error say ?
right click, refresh node if you can
Break the action value
i did click refresh and error still happening
it's invalid types
now camera wont rotate even left-right
Show pic
right because you need to use the values, but you should have two axis
that's fine it's just not plugged in
well yeah, you've not told it to move any
Drag the action value to empty space. Type break
so like this should be correct, right?
yeah camera aint moving any axis
Plug one of the axis to yaw
Btw u can create a third person template and copy what they have
much simpler
this now moves camera left-right but none of the other axis work
third person template is one of the few with good C++ code too
well yes, you haven't plugged in any other axis
Ye cuz u always set the other 2 axis to 0
you didnt get me there
i meant, plugging the other action value into either of the rest ones
doesnt do anything
controller input is definitely the proper way to handle this
try to print string the values, see if they are working
calls to set rotation are overriden by controller rotation
put the y with the y
then why tf default ue bp its not using it xD
Adding local rotation sounds wrong too
i tried xD, doesnt work
what are you trying to rotate?
@wooden cave #blueprint message
Copy this exactly. Change your node
use the free template lol
then make sure you're inheriting controller rotation on the pawn