#blueprint

1 messages · Page 228 of 1

gentle urchin
#

You want to read the IsFalling value

#

You want its current state

#

(You might want to check that movementmode == walking instead)

shrewd sorrel
#

this one

visual ember
#

this one is for setting the value

shrewd sorrel
#

which one am i looking for

gentle urchin
#

Get

visual ember
shrewd sorrel
#

sorry if im making it more difficult im new to the whole is grouned stuff

gentle urchin
#

Set is for changing
Get is for reading

shrewd sorrel
#

okay i got it

#

i have that part now

visual ember
shrewd sorrel
#

ofc my bad

#

but ive added the get movement mode now

#

what should i add to the movement mode

gentle urchin
#

Compare its state

#

To what you want it to be for dashing to work

shrewd sorrel
#

should i get the current state and the compare it to the state i want set and if they are the same player can dash if they arent they cant dash

visual ember
#

IF walking AND NOT dashing THEN launch

#

I think this is a correct logic for your situation

#

can you try to implement it yourself?

shrewd sorrel
#

should it be if walking and not jumping then lauch as i dont want it to trigger if jumping

visual ember
#

let me check your screenshots quickly

#

ahh, I don't think we need to test for jumping. once the character is off the ground, is falling will be true

shrewd sorrel
#

thats great do i have to implement it differently now

#

when i do my isfalling check it grabs it from my animation blueprint

visual ember
#

animation bp? something's fishy here

shrewd sorrel
#

i have a blueprint that does all my animations i have idle walking and jumping and my jumping is just my fallling animationm so i put it under isfalling

visual ember
#

uhh, let's think about animations later

#

the logic we need to implement here shall be in a character

shrewd sorrel
#

the animations is all wired up they all work

gentle urchin
#

Sounds like you're working out of context

shrewd sorrel
#

wdym

visual ember
shrewd sorrel
#

yeah whenever i try any isfalling it always grabs from my other bps not from any character movement or movement mode

visual ember
#

you have this, now drag from the green pin and type Equal in the popup window. select enum equal

shrewd sorrel
#

done

visual ember
#

forgot IsFalling for now. let's try what I wrote earlier:
IF walking AND NOT dashing THEN launch

shrewd sorrel
#

so do i put the enum equal to walking

visual ember
#

yes

#

now we need IsDashing and we need to negate the value of it

#

so similar. grab the IsDashing, drag from its pin and type the keyword in the popup

shrewd sorrel
#

my IsDashing Boolean?

visual ember
#

well, not mine 😛

shrewd sorrel
#

do i then type negate

visual ember
#

can you just try? it will be reaaaalllyyyy helpful if you start doing this

shrewd sorrel
#

im trying it is all very confusing once i learn it i will understand alot morew

visual ember
#

"what can i do with this?" and you drag the pin and start tinkering

visual ember
shrewd sorrel
#

lol my bad im trying to click on

visual ember
#

no one's bad

#

did negate result in anything? can you screenshot what you have?

shrewd sorrel
#

when i type negate i get x y z thingy

#

and a not boolean

visual ember
#

looks familiar

shrewd sorrel
visual ember
#

no

#

leave walking alone

#

grab your IsDashing

#

and negate that

#

separately

#

and why did you SET again? does it make sense?

shrewd sorrel
#

do u mean like this

visual ember
#

exactly

#

IF walking AND NOT dashing THEN launch

shrewd sorrel
#

i got there eventually lol

visual ember
#

so we have both, now we need to connect them with AND

#

drag either walking or this NOT end

#

and type AND

#

I love the tongue twisting end and AND 😛

#

ok, maybe not twisting, but you get the point

shrewd sorrel
visual ember
#

perfect

gentle urchin
#

Besutifull

#

Return and mark pure

visual ember
#

so now as long as we are walking AND not dashing, the logic can execute

visual ember
lunar sleet
#

I can’t rmbr the way I do it but yeah you can add a DA at runtime

gentle urchin
shrewd sorrel
visual ember
#

@shrewd sorrel can you now take this and hook to your Branch right before Launch Character?

#

but change from False to True on the Branch output

shrewd sorrel
#

so just hook up the CanDash functionm on my branch

visual ember
#

so was that in the CanDash function? we need to make it return a value first

shrewd sorrel
#

yes it was

visual ember
#

click on this and in the details on the right add Output parameter

shrewd sorrel
#

done

visual ember
#

type boolean, which is one by default

#

name it accrodingly

#

in the same panel select Pure

shrewd sorrel
#

do i just name it anything

visual ember
#

this is for functions that do not change anything, just read the state. and as you can see, we are not changing state indeed, so safe to check that

gentle urchin
#

(I usually just have it as ReturnValue, as the funcrion name states what it is )

visual ember
#

or RetVal for people who don't like long names

gentle urchin
#

Out ;-]

visual ember
shrewd sorrel
visual ember
#

not quite

shrewd sorrel
#

god damnit lol

visual ember
#

ok. let's pause here. can you go in your head through this

#

and see what is happening

shrewd sorrel
#

wait did i hook it up to the wrong thig

#

i shouold hook it up to the branch conditon right

visual ember
#

I don't know kappa

shrewd sorrel
#

i think thats right lol

visual ember
#

(yes)

shrewd sorrel
#

what do i then do with the spare is isdashing boolean do i just delete that

visual ember
#

it's not spare

#

look into your new CanDash function

#

you are using IsDashing there, right?

#

it's not going to set itself to true or false

shrewd sorrel
#

no i mean in my player character blueprint

#

do i have to then hook it up to something inside that script too

visual ember
#

hold on. what?

shrewd sorrel
#

i have a unused part

#

what should i do with that isDashing

visual ember
#

remove that. we are checking it inside CanDash

#

that's the whole point

shrewd sorrel
#

done

#

yeah thats what i meant do i remove that part

visual ember
#

we wrapped the logic in a function so now we don't have to think much

#

if we want to check whether we can dash

shrewd sorrel
#

thank god for that lol

visual ember
#

ok, run it and see what fails

shrewd sorrel
#

so this should work with the whole jumping thing

#

my dashing does not work now

visual ember
#

1st thing
this SET has to set to true

shrewd sorrel
#

already did that

visual ember
#

oh wait 🤦‍♂️

#

in your CanDash

shrewd sorrel
#

yes

visual ember
#

hook the result to the output xD

shrewd sorrel
#

that worked

visual ember
#

imagine I have to have your code abstracted in my brain and try to follow. sometimes it's hard to see it all 😄

shrewd sorrel
#

thank you so much it works perfectly now

visual ember
#

and I have no imagination (aphantasia)

#

yay

#

now try to understand HOW and WHY it works

#

like, really leave this thing behind with "yes, I know what's happening here now" feeling

shrewd sorrel
#

it works because it checks if its only walking and not dashing then its allowed to dash only if its walking

#

right

#

and it still works fine with my sprinting too

visual ember
shrewd sorrel
#

yeah i do that alot lol

visual ember
#

for the future. try to first think your problem through. and don't hesitate to open paint or take pen & paper to sketch it out first

shrewd sorrel
#

ofc thanks bud

visual ember
#

what you need to happen, under what conditions. what variables do you have, what you need to create. and just do quick checks on components. drag from the pin and type something that sounds correct. often you will find the variable or function is already there just to be used

shrewd sorrel
#

that makes sense

visual ember
#

it's a bit bloated, given how huge the engine is and how badly they implemented the search, but at least it gives you more than less, so it's a matter of good filtering 😄

shrewd sorrel
#

very true lol

visual ember
#

good luck on your endeavours

shrewd sorrel
#

but tbh ive done well with only strarting this project yesterday took time but i got the whole third person movement animations and thanks to your help a fully finished dashing mechanic so once i get home later im gonna work on fixing my combat animations

#

im yet to touch a yt tutorial

visual ember
#

great progress

shrewd sorrel
#

so thats good for me

visual ember
#

I'd suggest forcing yourself through a lengthy tutorial that just shows you the basics of the editor. you know, the sightseeing type of video that goes for 2-5 hours and just talks widely about what's available and some basics how to usue stuff

shrewd sorrel
#

i might lol

visual ember
#

it might be boring, but it's a good investment imo

#

the worst thing is not knowing something exist

shrewd sorrel
#

ive pretty much only been using unreal for about a month i did unity game development for about 2 years

visual ember
#

and wasting hours trying to figure something out

#

the more I suggest just grabbing popcorn and watching such introductory video

#

you just need to get shown what's available

gentle urchin
#

Oh yeah

#

Engine api is massive. Tons of stufd already exist

#

You just gotta know what its named and in which context it exists

shrewd sorrel
#

I appreciate the help from both of you tho

gentle urchin
#

Mars doing the heavy lifting

#

What a champ

late gorge
#

any idea why this binding is breaking?

#

i see both of these happen

#

but this one doesn't trigger

#

there's no unbinds of any kind anywhere

gentle urchin
#

Ai only executes on server

#

Would be my first guess

#

So you've only bound to it on the server

#

Also... crystals died should be an onrep variable

#

Not an rpc thing

late gorge
#

it's singleplayer

#

not mp

gentle urchin
#

So execute on all is ment to do what

#

With a multicast

#

Thats a multiplayer concept

late gorge
#

it's just singleplayer with some of the code being MP-ready (but not being used as such)

gentle urchin
#

Not easy to guess that with the context you provided. (And even then the multiplayer ready part should be revised )

granite frost
#

I have an actor component which has some variables which should only appear when another variable is set. How can I do it? I thought maybe constructor script could do that but there doesn't seems to be any in the actor component.

gentle urchin
#

Also it seems your interface messages can just be event diapatchers from the component.. those can be directly bound in editor

gentle urchin
#

EditConditionHides / EditCondition and similar meta specifiers

late gorge
granite frost
gentle urchin
#

No, not in bp

late gorge
granite frost
#

😭

late gorge
#

and they can't be bound in editor unless i'm making subclasses

#

this is a boss setup using a base AI class

#

with a manager actor that wakes up the AI (whereas usually the AI is automatically woken up on begin play)

#

so the fight doesn't start until ceonditions for it are met

gentle urchin
#

Like most boss fights / setups

#

Not sure why you cant still bind them at editor time in the baseclass

late gorge
#

at this point im thinking of just setting up teleporters and using the auto wakeup setup (since that's causing issues too)

#

but these binds need to work regardless

gentle urchin
#

Event dispatchers

late gorge
#

the whole point of the manager actor is to isolate the custom code from the core code that sets up the behaviour tree

gentle urchin
#

For sure , encapsulating logic in a manager component makes sense

late gorge
#

it's an actor, not a component, but yeah...

#

the idea being this boss isn't vulnerable till crystals are dead... i got it to work under certain conditions

#

but those conditions wouldnt 100% of the time initialize properly

#

so 1 boss + 4 crystals, most of the time you'd end up with atleast 1 actor completely missing

gentle urchin
#

Timing issues in other words

late gorge
#

more like WP issues

gentle urchin
#

Just put crystals dead into the gamestate

late gorge
#

something seems to be unloading them for who the **** knows what reason

gentle urchin
#

Boss only cares about some crystals dead = 4

#

Crystals dying only needs to tell gamestate that they died

late gorge
#

why do i need game state

#

for all intents and purposes, the encounter manager actor is the game state

gentle urchin
#

If you're struggling with them being unloaded

late gorge
#

i don't see how changing what actor tracks the info will help

gentle urchin
#

Clearly you're in need of a more presistent actor

#

Is how I see it anyways

late gorge
#

using SpawnActor has issues, preplaced and WP-managed (via component) actor don't have that issue

#

the WP manager component can quietly unload the actors for whatever reason (it should trigger some event when it does it, but it's not, i dont care to be fixing something like that...)

#

so preplaced actors can destroy the component before any initialization begins and the managed actors cannot be used with the manager actor because they don't exist as a hard reference

#

but spawned actors exist in the "get rekt" state where timing matters so i can't use it

#

even more fun is that when i did try to spawn the actors at runtime, they'd remain in the editor AFTER ending play

#

don't even wanna get started on that, so yeah, preplaced actor that calls the hardcoded init it is (that's the one that destroys WP manager, so stock WP unloads it afterwards)

ancient moth
#

I'm getting this error, but after refreshing the node, everything is fine, but then after a restart of the engine the error comes up again.
I even tried replacing the node, what can i do about it?

late gorge
#

which... i guess could work?

#

it's like 3000 hrs of work and now there's only some memory issues coz gotta make something into a soft ref

#

and this is left as like really big obvious technical problems

#

such a headache

gentle urchin
late gorge
#

you wanna be making changes to 1000+ actors by hand?

#

or use a DA-driven system

#

🤷

shut quest
#

Probably a simple one here but cant get this to work - "product name" appears as None on the created widget. Widget creates fine. Had it working yesterday jumped on today and its not working..

late gorge
#

and they are placed directly

#

they're just managed with a component that loads them in based on distance (and loads low cost imposter actors at higher distances)

late gorge
shut quest
#

They are all none

#

Print string from the loop works as you'd expect. Its just when its passing the other widget. I would do it the longer way but I only wanted a quick list 😄

late gorge
#

that's whack, data tables should not have repeat rows

shut quest
#

Yeah im totally confused by it

#

Will open in C++ and have a look . I remember a bug in 4.something about this

versed sun
#

Make sure you are using Product Name correctly in the widget, look like something isn't connected

shut quest
#

all connected okay

versed sun
#

and where is that used ?

gentle urchin
#

(Bindings are a big no no)

#

Especially for static text like this

shut quest
#

oh really. Learn something new everyday okay ill set it instead

gentle urchin
#

Just do OnConstruct -> setText (ProductName)

shut quest
gentle urchin
#

The container widget,

#

Does that have any preplaced product widgets ? Or is it empty?

shut quest
#

Its empty

maiden wadi
#

Oh boy. No.

#

You're misunderstanding how Listviews work.

shut quest
#

I know i should do it the other way but this was quick and dirty.. It WAS working last night lol

maiden wadi
#

You don't create a widget to give to the listview. You create a data object. Just a basic UObject and then give that to the listview. The listview creates it's own widgets for those objects and you override the OnUserEntry..Set.. whatever that function was and cast to your specific data object there to pull your ProductName

maiden wadi
shut quest
#

Alrighty I'll do it that way 🙂 Thanks!

gentle urchin
#

Ah listview, i missed that 😂

#

I thought add item was some custom thing 🤣

shut quest
#

😄

granite frost
#

How do I update the value of this index?

gentle urchin
#

Set array element

#

Or set by ref

#

Since you got a reference there

versed sun
granite frost
#

thank you!

versed sun
granite frost
#

Thank you so much!

shut quest
#

all working cheers guys was just more weirded out that i had it working the stupid way 😄

maiden wadi
shut quest
#

Ended up going for the uniformed grid view as it allows me to what I wanted 😄

#

working all fine

#

Might not the be right way but its just a quick cheat menu while testing

gentle urchin
#

(Input row and column directly instead of after)

#

Being a foreachllooop

shut quest
#

Oh yeah it is 😄 not sure why its after as well

#

durp

gentle urchin
#

Also

#

You can deduct row and column from index

#

Index % ItemsPerRow = row

#

Index / ItemsPerRow = column

#

Deduct... what am I, 70!?

maiden wadi
#

If you're going to have >30 things, I advise Tileview/Listview just for the runtime performance. You hit 200 widgets in a grid and you'll be paying some hefty slate Prepass costs.

gentle urchin
#

30!?

granite frost
#

uhhhh. I just found out that calling get overlapping actors also call the end overlap event? This is so weird

maiden wadi
granite frost
maiden wadi
#

Bit odd. It's code just populates an array.

gentle urchin
#

Sounds like something else is going on

granite frost
#

I have been stuck at it for 10 min and after making like 15 print I figured out that end overlap event was firing just after calling get overlapping event and to ensure I also made a delay to call it and it still did that

#

aah nevermind

#

I am an idiot

#

Forget whatever I said

gentle urchin
#

There we go

#

😂

#

Found that something else

granite frost
#

yeah

gentle urchin
#

Bugs with these ancient blocks are pretty rare

#

Atleast most of em... those that are buggy are mostly known to people around the block

granite frost
#

Now I feel like a really big idiot.

gentle urchin
#

CAC Im looking at you

granite frost
#

whats CAC?

gentle urchin
#

Newer systems on the other hand... might have some quirks here and there

#

Child actor component

granite frost
#

🤔

#

nvm I am gonna try to find a better approach to do it now

#

bye

#

and thanks for listening to my rubbish

maiden wadi
#

I used CACs on Atre. But they're literally just a visual actor with no real gameplay logic. Doesn't serialize with the map or savegame. 😄 They work good in that regard. Like a collection of meshes basically.

#

I get to swap them just by passing the correct class when gameplay state changes, which is nice.

gentle urchin
#

As long as you know/understand the quirks its usually not a problem to use them^^

granite frost
#

I have been trying to understand this overlap event and please guide me. I don't know how and when it works? As far as I see as long as the response type of both the bodies match it triggers? Then whats the role of object type?

#

No, its too weird

#

How does it works?

rugged wigeon
granite frost
#

No, I mean when does a sphere collision detects an overlap. What things need to be set to what?

#

I know sphere collision and mesh are different

visual ember
#

objects have "types". then you decide with which types you want no collison, with which overlap events, with which blocking collision

rugged wigeon
#

When it overlaps with a collider of the object type it is looking for

#

That is set to overlap with it

granite frost
#

Is that it?

rugged wigeon
#

That’s it

granite frost
#

Is the opposite possible? Like if my sphere collision object type matches with the overlap response type of other collider will my collision still detect it?

rugged wigeon
#

Sounds like you would want to begin some logic on BeginOverlap of the other acre

#

Actor

granite frost
#

?

#

Sorry what?

#

I just want to know because its too hard to figure out when it will overlap?

#

Generate the overlap event

#

And when not

visual ember
#

if you are confused that much, just create a test scenario and see in action what's happening and when

#

will give you more knowledge and understanding than any answer you can get here

granite frost
#

Its confusing because of the scenrio I have created. I made a new collision type. And set it to ignore by default to all. Now if I set the collision response of actor mesh in the world as response to the new type as overlap and set my sphere collision object type to the new type. My sphere collision still detects it

granite frost
rugged wigeon
#

Just post some pictures

granite frost
#

What should I send pictures of when I am here trying to learn🥺

#

As far as I understand. If either side's response and object type matches, it would trigger.

#

Its getting hard to understand why its even working.

#

I'll smack my head around a bit more😔

rugged wigeon
#

Your actor and it’s components, and your collision settings

granite frost
#

I think I understand

#

Both bodies needs to overlap for the overlap event to trigger

#

If I can overlap it but its set to ignore me I can't detect it.

#

Thats the final conclusion I came to

#

Because the event is not triggering even when I can detect it.

#

But it can't detect my sphere collision

#

So its a mutual thing?

gentle urchin
#

Youd be hard pressed to only make one body overlap

rugged wigeon
#

Yes

granite frost
steel star
#

Q: Is there any way to get a fly-camera in a blueprint editor viewport?

#

It is really quite awkward to create multi-actor blueprints, or even arrange components that have their own transform, with only an orbit cam

#

OMG its working now

#

nvm

boreal scroll
#

Hi everyone! I am a newbie.
I have a waiting mechanism using Event Dispatcher.
And I shoud use this waiting mechanism 2+ times
How can I make it reusible? I tried make function but it doesn't work, I have problem with event.

visual ember
steel star
visual ember
#

don't drink and code

rugged wigeon
#

Dispatchers should be a bit rare in your code

boreal scroll
gentle urchin
#

Speaking event sounds like a useful dispatcher to me but guess it depends

#

But i guess direct event call might work aswell. Depends a bit on the relationship between A and B and hiw tied together they should be

#

If the speaking event came from something like a component, having a dispatcher unties it from the owning actor type

boreal scroll
gentle urchin
#

Sounds*

#

Minor typo

visual ember
#

if you have some saga (a sequence of events) going on, I would suggest making that into a "thing" and driving your logic either directly by it or indirectly by poking it about the state and making decisions based on that

boreal scroll
boreal scroll
gentle urchin
#

More like SequenceID or something

visual ember
#

sounds very limited. but the answer is: whatever the state is needed to drive the logic

gentle urchin
#

Bool makes it just binary, a or b
.. is that all you ever need ?

boreal scroll
#

I want something like this
startSpeaking>WaitForEndSpeaking>DoActions>startSpeaking>WaitForEndSpeaking>DoActions
Boolean variable is possible solution, but in this case I need to use While loop for wait expected boolean state
And as far I understand using While loop is bad idea

gentle urchin
#

While loop is thread block, so yeah bad idea

maiden wadi
#

Depending on what this is for. Flowgraph maybe.

gentle urchin
#

Just a conversation it seems

#

With the option to do an action

#

So its just a question of managing exec flow

maiden wadi
#

Could also be a simple level sequencer, depending on the case.

#

They allow event broadcasts to do things in their graph as well.

gentle urchin
#

Do people use those for in game dialogue ?

boreal scroll
gentle urchin
#

Seems such overkill, but on the other side, such controls are neat

maiden wadi
#

Less useful for generic run of the mill NPC dialogue.

#

But the above looks like cinematic stuff. Someone talks for x duration. Do stuff, someone talks for x duration, do some other stuff. Very linear. Could easily be a sequencer.

boreal scroll
gentle urchin
#

Can you do interrupts in sequencer aswell?

shrewd sorrel
#

this works perfectly fine but for some random reason it still only chooses the same animation instead of picking out of the random 4

gentle urchin
#

Because..

#

You reset it on completed

#

Instead of incrementing

shrewd sorrel
#

how would i change it to work

gentle urchin
#

Increment on completed

shrewd sorrel
#

increment on float or int??

gentle urchin
#

Combo = (combo + 1) % ComboCount

#

Int, since thats what your combo index is...

#

Im more fan of using sections for combos

#

Retains the logic inside the same montage

shrewd sorrel
#

so like this

granite frost
#

How do I make it so that an actor acts like it don't exist

#

I don't want to always destroy and create actors. Instead just want them to completely disappear and appear when needed

shrewd sorrel
gentle urchin
shrewd sorrel
#

done

#

now it only lets me play attack once

gentle urchin
#

On completed

#

Set attacking false 🙂

#

(Which isnt true but its how yournlogic seem to be laid up)

shrewd sorrel
#

like this

#

so that allows me to the combo once then i cant attack again

gentle urchin
#

Are you interrupting the montage ?

shrewd sorrel
#

its just playing the montages onto the mesh itself throug the play montage component

#

should i have the montages on loop?

gentle urchin
#

Nah

shrewd sorrel
#

that didnt fix it lol

gentle urchin
#

Need to see more of the logic

shrewd sorrel
#

thats the full logic atm

#

rn it allows me to do the combo but then after that i cant attack again so i think i just need to have a way to reset the whole script to be able to repeat it right?

gentle urchin
#

You didnt do my combo logic

#

AttackCounter = (AttackCoubter+1) % NumberofAttacks

#

This loops it

shrewd sorrel
#

so +1 then divide by number of attacks

gentle urchin
#

Modulo

#

Not divide

shrewd sorrel
#

so this

gentle urchin
#

Yepp

#

Perfect

shrewd sorrel
#

do i attach it to anything or does that work on its own

gentle urchin
#

It needs to be attached

#

To onCompleted

#

Instead of the existing increment

shrewd sorrel
#

how do i attach that as theres not white attach points

gentle urchin
#

You set AttackCounter

#

To its resulting value

shrewd sorrel
#

wdym

#

i think i did it nvm

gentle urchin
#

The output of the modulo

shrewd sorrel
#

like this

gentle urchin
#

Yepp

shrewd sorrel
#

so it should work now

gentle urchin
#

Test it

shrewd sorrel
#

perfect thank you

#

now to try and not break it by adding the other part of it

#

im adding a feature now that the attacking only works if the weapon is equipped

gentle urchin
#

Wrap canAtrack in a function

#

And add EquppedWeapon.IsValid

maiden wadi
gentle urchin
#

Yeah, player skipping for instance

maiden wadi
#

I'd assume so. A lot of games use sequencers for cutscenes and such and you can skip through sections of them. They're basically just a movie track so I can't imagine you can't scrub to a specific part.

gentle urchin
#

Hmm fair point

maiden wadi
#

Haven't personally used them as much as I'd like. 😄 Something I need to dig more into at some point.

gentle urchin
#

But not very dynamic then i guess

#

Swapping ends based on player input

#

Unless you set them all up in the sequencer ..ugh

maiden wadi
#

Nah. Like I said above, not great for dynamic, but if it's like a linear cinematic thing then it's great. Probably due to comfort, but i'd still be inclined to use Flowgraph for control. Even if I had 100 sequencers set up and wanted to play them at varying times based on flow.

gentle urchin
#

Sounds like a neat plugin

maiden wadi
#

I like Flowgraph cause it'd let me set up stuff nicely. I can push a cinematic set of widgets up which will also block gameplay, but receive my inputs like skipping and such and I can bind that in the flow node, and then push the actual cinematic if needed.

gentle urchin
#

Gotta try it at some point

maiden wadi
#

Then I could just make data assets or keys or something that the node can take in. Spam the same node everywhere you need a new cinematic or dialogue and just change it's instance data.

#

I've only dabbled with it a bit, mostly with that tutorial on Atre, but I have to say that it's a gamechanger for system flow.

gentle urchin
#

Sounds very convenient if so

tough heart
#

hello

▲ Blueprint Runtime Error: "Accessed None trying to read property As Food Spawner"

im trying to make a food spawner thats spawns a actor wich is food

so im trying to give it a limit so its not inf respwaning

these pic are in the food actor *

#

here the food spwner bp

#

idk why i keep getting accesd none trying to read property as a food spawner

#
  • it is working
#

so its wired tbh

tough heart
#

or the number of food

#

so it can spawn again

gentle urchin
#

(Making internal functions to handle the data changing (food -1) is a far cleaner approach, more in-line with general oop principles)

tough heart
#

trying to cas the function

#

leme try it

gentle urchin
#

Doesnt change anything else about it ofc. Just letting you know

gentle urchin
#

Accessed none is probably a timing issue, where the reference is accessed before its set. You can remive such errors by ensuring validity of references before you access them

#

E.g. IsValid

#

Encapsulating logic makes it less cumbersome to troubleshoot or change it later on 😄

tough heart
#

now i can fix it i think

#

thx @gentle urchin :party_manny:

rugged wigeon
#

You definitely do not want to be calling delay on tick

#

You would make this a lot better by making the food spawned something that is exposed on spawn to guarantee that your reference is set from the beginning

#

Then start a looping timer on begin play to handle the spawning of the food rather than doing it on tick

#

When the food is eaten or whatever it should tell the spawned to trigger an event that decrements the count and restarts the spawning timer

#

@tough heart

drowsy anvil
#

how do I get the node below the spring arm in UE4?

maiden wadi
#

Drag off of Spring arm. GetRelativeRotation, and then right click the purple pin and split the struct.

drowsy anvil
#

thanks 🙂

shrewd sorrel
#

idk if im doing this right but i think im in the right direction so basically if needs to attach to my attacking code by having attacking only work if the weapon is equipped i have made this can attack function to help define that

rugged wigeon
#

A function called Can Attack should return a Boolean variable that says whether or not it can attack

shrewd sorrel
#

how would i code that into my function

rugged wigeon
#

Add a return node

shrewd sorrel
#

so that is correct?

rugged wigeon
#

Drag the bool into it or add it to the outputs in the details

#

No you don’t have a return node

shrewd sorrel
#

i mean like without the return node

rugged wigeon
#

Ehh

shrewd sorrel
#

i have added the return mode

rugged wigeon
#

Not really. What you should probably be doing is branching off of Can Attackif you can, then you do the attack logic

#

Show it

shrewd sorrel
#

bet let me code that really quick

shrewd sorrel
#

thats what i have rn

#

but if u think other way is better i can code that

rugged wigeon
#

Drag the red pin into the output node

shrewd sorrel
#

into the return node?

#

done that

rugged wigeon
#

Show again

shrewd sorrel
#

okies

#

that dosent work unless ive wired it into my combat wrong

#

i think branching probably is the way to do it

#

i think i forgot something so i added it

rugged wigeon
#

Ok so now you’ve set up this function to return a bool. I don’t think you have the logic in there that you want but it’s at least a start.

#

Let’s take a look at the part where you are calling it now

#

We will fix the function later

shrewd sorrel
#

thats the attack function

rugged wigeon
#

Pretty good

shrewd sorrel
#

i still attacks when not equipped so i think the function needs fixing

rugged wigeon
#

First of all I’m pretty sure you want to drag off of True instead of false. Because you asked if you can attack, and should only attack when you can

shrewd sorrel
#

still does the same thing

gentle urchin
#

^^^

rugged wigeon
#

Second I think you want your Can Attack function to return True if Equipped is set to True AND Attacking is set to false

#

So go rewrite your function to do this. You should not be setting any variables in your function. Ideally function calls don’t change anything. They just calculate stuff.

gentle urchin
#

CanAttack = Equipped AND NOT Attacking

shrewd sorrel
#

like this

gentle urchin
#

(You can drop the == true)

#

Ans you're missing a part...

shrewd sorrel
#

what part am i missing

gentle urchin
#

Attacking?

shrewd sorrel
#

is it the set attacking true?

gentle urchin
#

You dont want to set any variable in there

shrewd sorrel
#

how should it look

rugged wigeon
#

Equipped goes into AND

#

Attacking goes into NOT goes into the same AND

#

The AND goes into the output

#

Delete the set attacking node and the == node

shrewd sorrel
#

like this

rugged wigeon
#

Yeah

#

Looks good

shrewd sorrel
#

so that should work now

#

it does

#

thank you

tawdry walrus
#

Hi, I have a quick question.
Is a soft object reference better than a hard reference?

tawdry walrus
#

What do you mean?

lunar sleet
#

Hard ref means “load the object now” soft ref means “don’t load it just yet”. But if it’s already loaded, the answer is moot

tawdry walrus
#

thanks.

rugged wigeon
#

And usually it’s already loaded

#

When in doubt just go hard

lunar sleet
#

I find soft refs useful for DAs

#

So you can iterate over them without loading everything right away

maiden wadi
#

I still can't get over the fact that interfaces are so widely popular because people won't learn linkers.

shrewd sorrel
#

how do i stop player movement when attacking

maiden wadi
lunar sleet
maiden wadi
#

Asset manager is nice though. Cause you get to do things like this.

lunar sleet
shrewd sorrel
#

ive tired multiple ways in getting this to work but i phyiscally cant figure it out basically im wanting to add when the player is attacking player movement cant not be used and it moves the player forward by a set amount every time the attack is called so it looks like the attack is moving the character forward

rugged wigeon
#

In your player controller where you’re reading the inputs to apply movement, check if they are attacking and only apply the inputs if they are not

shrewd sorrel
#

okay let me try do that one first

#

this is my movement idk how i would set it up with this

#

would it just be a simple true or false branch

#

with attacking is its varriable

#

so if attacking is true do nothing but if its false then move

rugged wigeon
#

Yes

shrewd sorrel
#

im suprised i understood that

maiden wadi
#

Easier to just enable or disable the movement component probably along side the boolean set.

rugged wigeon
#

Interesting

shrewd sorrel
#

i find branching easier for me

maiden wadi
gentle urchin
#

Ignore movement input...

maiden wadi
#

Now you don't need to branch at all regardless of what gives input to the character.

shrewd sorrel
#

okay now im wanting to add a forward force to the player when attacking so it moves the player forward

#

i tried the launch character one but i dont see it actually workin

#

but im a try it again really quick

#

that dosent work unles im doing it wrong

#

this is how i have it set

rugged wigeon
#

Ideally that’s on the montage itself as root motion

shrewd sorrel
#

i got it working for now i will be changing it after

maiden wadi
shrewd sorrel
#

is there a way to have two animations running at the same time

visual ember
#

blend

shrewd sorrel
#

because i want to be able to keep my movement animations while also triggering the equip and sheathe animation

#

because it just stops my movement animatioons

rugged wigeon
#

You can set up the animation montage to only affect specific bo es

#

On the slot

shrewd sorrel
#

how would i do that

#

i have a blend for movement and montages for everything else

rugged wigeon
#

You’ll have to blend the slots in the anim graph

#

It’s not a blend space. It’s blending the slots.

visual ember
#

blend, not blend space

shrewd sorrel
#

oh okay how would i set up a blend

#

i havent used blends before

visual ember
#

Welcome to my new series, Advanced Animation Application [for Unreal Engine]. Today we're creating babby's first AnimBP and learning how to transfer variables from the CharacterBP to the AnimBP. This video serves as a precursor to the rest of the series - ensuring that you're up to speed with the very basics of setting up an Animation Blueprint....

▶ Play video
#

enjoy

shrewd sorrel
#

thanks

visual ember
#

he's using UE4 there, but most things are the same and you mostly need to learn the basics anyway

shrewd sorrel
#

ive watched the video but i dont understand how i implement my movement always running when doing my montages because i already have what he showed set u for movement

rugged wigeon
#

The movement part is your base pose in the anim graph

#

You blend it with the slot to use your overrides

rugged wigeon
#

And now you blend that slot with the upper body slot for the upper body only overrides

shrewd sorrel
#

is my montages my uper body slots then

#

thats how i have the graph set up @rugged wigeon state machine is for the movement

rugged wigeon
#

Pipe the second node into blend pose by weight or something

#

Then you need to specify that the second slot is for the upper body bones only

#

Idk the exact steps by memory

shrewd sorrel
#

the problem with my animation for drawing and putting away the weapons it moves the lower body also

drowsy anvil
#

Hello, I have this code that moves my projectile spawner on a spring arm, but whenever I hit the end of the clamp during gameplay, the arrow freaks out and moves around wildly instead of just stopping the movement going further, how do I fix this?

versed sun
#

I set my clamp to -89 , 89
probably for that reason

lilac juniper
#

Does anyone know how I can get the map name from a world asset?

drowsy anvil
rugged wigeon
past imp
#

Unreal engine equivalent to Unity’s Multi aim constraint?

Hello everyone. I’m trying to make an fps game with a full character, not just the hands like in the template and I’ve come across an issue with the fps camera and rotations. I want my upper body, including arms and head, to rotate toward the direction of my camera. I know that one solution might be blend spaces, but that would just be too many of them, I feel.

Are there any good tutorials on this issue? What would be the most elegant solution to this problem? Is there something similar to that Unity multi aim constraint component?
Thank you in advance 🤞🏻

rugged wigeon
#

You use a control rig and some aim nodes to point at a target point

past imp
rugged wigeon
#

Control rigs are potentially very complicated. But your use case does not require much in the way of actually rigging the skeleton. You just need to set a point and call aim nodes on the head and spine bones.

trim matrix
#

Hey, does anyone know if you can rebuild a navmesh on call in blueprints?

chilly geyser
#

How to widget component always face camera for all players in multiplayer (without screen space)

iron idol
#

I have a scroll box that just blacks everything out when I scroll down. Anyone know what the problem might be?

#

sometimes I can see through it, so it seems like theres like a layer that gets placed over the text

void hemlock
#

How do I stop these 2 actors from overlapping when spawned?

iron idol
#

is that in details?

chilly geyser
#

Yeah its one of the options in the details panel on the scrollbox, I had the same issue with a giant dark circle that appears when scrolling

iron idol
rugged wigeon
lunar sleet
lunar sleet
void hemlock
lunar sleet
chilly geyser
drowsy anvil
#

how do I get a float to have a target input like in this image here? I dragged off my target and chose "set view pitch min" but it comes without it

rugged wigeon
#

That target is there because you’re setting the View Pitch Min variable of an arbitrary actor of whatever class that is

#

When there’s no target input that means the class instance will be setting it on itself

#

If you are intending to set your own internal variables then you don’t want to have the target node. If you really want to be setting data values on another actor then start with a reference to that actor, drag it out, and say set View Pitch Min.

#

But you generally don’t want to set values on other actors

drowsy anvil
#

thanks got it, why is it not a good idea?

rugged wigeon
#

It gets messy. Ideally things should be the only things to modify their own values. Most
Programming languages are explicit about this but blueprints don’t allow you to be strict about it

maiden wadi
#

More generic term is encapsulation. Things should be allowed to modify their own state and call methods on other classes, but should never modify state directly on another thing without the use of a method.

#

While not specifically logic breaking, encapsulation allows systems and things to be easier to follow. You know that something is affected by specific things instead of... from anywhere.

drowsy anvil
#

thanks makes sense

random valve
#

Anyone have any opinions on writing C++ vs scripting with BP?

thin panther
#

The officially supported opinion and the fact will be it's always better to use a mix of both, rather than treating it as one versus the other.

C++ generally for core systems and base classes, BP for BP exclusive things and quick gameplay actions. The mix is up to you though. Doing most of it through C++ and only using BP for asset referencing is equally as valid as doing everything in BP and using C++ only to declare structs, enums and expose things to BP, depending on the game of course, some games will need a heavier mix of C++, especially multiplayer ones.

random valve
#

Thank you, just trying to wrap my head around things

maiden wadi
#

For me, C++ for generic systems and infrastructure, BP for gluing them together for gameplay.

chilly geyser
chilly geyser
maiden wadi
#

You shouldn't be doing this anyhow. Rotating stuff to face the camera is expensive. You get 30 widgets, that is 30 things that need to be rotated to face the camera every frame.

#

Avoiding screenspace isn't the answer, using depth projection is. One of the reasons I really like the indicator system in Lyra.

rugged wigeon
chilly geyser
maiden wadi
#

The code already exists in engine, Lyra's indicators just made use of it. Running AFK for a few, but I can dig it up after.

chilly geyser
hollow cove
#

Hey, i have a large planet in my games sky, 3200 scale - the scale is causing it to use 1.5ms in rendering time. Things i've tried to fix it:

  • changing the material
  • turning off shadows
  • turning off lighting
  • turning off reflections
  • turning off collision
    Also i should mention it's absolutely the sphere mesh itself as checking/unchecking visible is what causes the performance drop. And I can't fake the size by making it small and bringing it closer due to volumetric clouds being behind it
maiden wadi
# chilly geyser Also I was going to find a way to not need to do it every frame, just when a cam...

Event driven stuff is a worthy goal, but rather pointless in the end if you have any sort of consistent movement game. This would only help people who AFK and nothing on screen is moving. Because you need to update the WidgetComponent that moves, and update them all if the camera moves. Which becomes a complicated task in itself that you could end up paying even more for. What if everything on screen is moving and you're moving the camera? Without an extra check per actor, you're paying the cost twice per frame now at worst case. And you should always code for worst case.

chilly geyser
#

Let me get a video, maybe theres a solution using screen space still, I already modified it to fake/change depth perception for yourself, but distance from another person is becoming a factor

maiden wadi
#

Depth is just a distance check mostly. Component to Camera distance. But unless you have control over the container of the widget, which you don't with WidgetComponents, you have to give the owning component to the widget in the component so that it can do that itself to scale it's own contents.

chilly geyser
#

How do you do distance check from yourself(the same widget on another player) to change the size of their widget on your screen though?

#

Without changing your own lol

maiden wadi
#

It's per widget.

#

You pass the component housing the widget into the widget via GetUserWidgetObject or whatever the call is. Cast it to the widget it's showing, and set some ref as Self from the widget component. Then in the widget you can distance check that widget component ref to the camera. Local camera location can always be retrieved anywhere via GetPlayerCameraManager

chilly geyser
#

That will allow a clients widget to be a different size than the same widget on a different client?

maiden wadi
#

Widgets aren't networked. They're all local only.

chilly geyser
#

Maybe I'm not explaining my problem well enough. The widget on another client should appear smaller the further away you get from them. Currently it stays the same size no matter how far you run if you look in their direction.

#

Meanwhile your own widget should not appear to change size

maiden wadi
thin panther
#

It wouldn't because widgets aren't networked. A change to a widget is only ever going to affect the client it changed on

chilly geyser
#

World space fixes it which is why I was looking for a solution there

maiden wadi
# chilly geyser Maybe I'm not explaining my problem well enough. The widget on another client sh...

You're explaining it fine. You're just not understanding. You have two clients. You have a widget component on some chest actor. The chest is 200m from ClientA. It is 500m from ClientB.

On ClientA, the widget locally ticks and is scaled to match what it should be at 200m.
On ClientB, the widget locally ticks and is scaled to match what it should be at 500m.

ClientA does not care about the fact that ClientB is 500m from this actor or widget because it's doing this locally for itself.
ClientB does not care about the fact that ClientA is 200m from this actor or widget because it's doing this locally for itself.

#

And on top of this, if for any reason you ever support local coop, RIP world space widgets. Cause you'll have Player1 fighting over Player2, cause they're in the same world and machine unlike ClientA and ClientB who are on separate machines that only need to do it once locally.

chilly geyser
#

If there was an object in the world that I needed to do this it would be easy, but the widget is on the character itself

maiden wadi
#

Then change the chest to Client3's character.

#

The point is the same.

chilly geyser
#

Maybe I don't understand then, because You are basically making the same widget two different sizes at the same time on the same client

maiden wadi
#

No.

maiden wadi
#

I'm making ONE widget a certain size on one machine.
I'm making a completely different widget, that just happens to be associated to the same actor on another machine a different size.

#

Which is what I mean when I say they're local only. Each machine has a widget for the actor. Each machine locally sets the size differently for their own widget for that actor.

#

Think less networking. Don't treat the widget as replicated. Think about it from a singleplayer perspective. This client has a widget for this actor, and that is all that matters.

chilly geyser
#

Alright, that makes sense, how would you code that though? anything I put in the widget affects itself

maiden wadi
#

It should affect itself, from the distance to it's owning component and the local camera.

chilly geyser
#

ah, distance from component to camera, 😅 ill try this

#

Thanks

#

🤔

#

Made sense before, now I feel like its going to affect both again

lunar sleet
#

try not to forget how self works

chilly geyser
#

yeah, no matter how far i run, the camera is still the same distance away from the widget

lunar sleet
#

is the camera not on the char?

chilly geyser
#

It is, but i need the widget that is on another client/character to change size

#

while keeping own widget same size

#

so I need distance from other client widget to camera

#

Im probably thinking about it wrong again

lunar sleet
#

or distance from this camera/char to the other actor instance

chilly geyser
#

How to refrence actor instance?

#

For each and remove self?

lunar sleet
#

no

#

you really shouldn't try going for multiplayer as your first game, esp. without having the basics down first but yeah

#

you can get refs by interacting with said instances, line traces are one way

#

get actor of class with for each loop is one of the worst ways to do this, tho it has its uses sometimes.

chilly geyser
#

Pending on what you mean by first, It's not. I'll never learn stuff about multiplayer unless I start doing it.

lunar sleet
#

if you want to learn #multiplayer start with the pins in that channel, especially the compendium.

#

but I'd recommend getting some more practice on UE basics first, even if you made a game in other engines.

maiden wadi
rugged wigeon
maiden wadi
# rugged wigeon This is still going to be an adjustment on tick right? Curious why doing this is...

There are many other factors.

For starts, Widgetcomponents are SceneComponents. Which means that every time anything they're attached to moves, they move. Minor cost initially, but it starts hurting as you scale up to dozens or hundreds of actors on lower end platforms.

Second is that WidgetComponents do not collapse their widget hierarchy when no longer in view. This means if you have a large map, and a bunch of stuff has widget components, even a simple widget with a border and a textblock to show a name gets insanely expensive even if their widget component is stationary because of slate prepass.

We dealt with that on Red Solstice 2. We have large maps with literally hundreds of widget components. I think some of the medium sized maps had something around 500-700 of them. Lockers, pickup items, other characters, etc etc etc. Most were literally a border and a textblock. But we were paying over 2ms on a decent machine for slate prepass for it all because it was just a fuck ton of widgets.

And don't forget that CPUs are absolutely wonderful at doing work in order on simple sets of data. Ticking through hundreds of registered indicators to see if they should even be considered for display before doing the majority of the work goes a long way.

rugged wigeon
#

More so than depth sizing being faster than rotation adjusting?

maiden wadi
#

More saying that something like the indicator system is far superior to widget components.

But I would bet that comparing the rotation of world space, to the depth projection of screen space. I can almost promise that depth will win. Finding distance is super cheap.

rugged wigeon
#

Ok I’ll look into it later

soft estuary
#

i have these 2 child actors exo skeleton from marketplace,Implemented them into my project but its suppose to be attached to this players mesh etc but its not.

#

sockets also are named right and skeleton has been set to work with it

#

when playing ingame the exoskeleton does not appear at all nor no errors

warm oriole
#

I'm currently recreating a lot of the stuff from the Cropout sample to learn and I've encountered a strange issue. This batch of code always returns spawn as:
Blueprint Runtime Error: "Accessed None trying to read property Spawn". Node: Placement Mode Graph: EventGraph Function: Execute Ubergraph BP Player Blueprint: BP_Player

As far as I can tell my implementation of the interface and UI is almost identical to the sample's, but I'm simply expanding upon the building system for my project.

Any idea why I'd be getting this error?

mellow pike
#

im using a BP that overrides the default character with my own.

#

so im gessing the controller is not referacing my sceleten corectly ?

maiden wadi
warm oriole
#

Ah it can return null if it collides with something?

#

I guess I've never had it happen before so I wouldn't expect that behavior

mellow pike
#

yeah if i switch to Quin it works

#

were do I set my skeletons 🤔

warm oriole
warm oriole
maiden wadi
#

Class should have an IsValid function for it. I don't think it has a macro like pointers do, but easy enough to feed it to a branch.

warm oriole
#

Yup, that's put me on the right path -- the class is invalid.

Now my next question is, what makes a class invalid?

mellow pike
#

had not herd of that

warm oriole
#

I'll grab a screen shot of it for ya, one minute

maiden wadi
warm oriole
#

In your animation BP go to class settings

warm oriole
marsh sonnet
#

Hey vy'all! I have a data table where character names are set, they're stored in an enum--I want each character name to render as a different color in the "character name text"--how do I do that?

maiden wadi
mellow pike
warm oriole
#

If your anim BP is already set to your skeleton then the animations themselves probably haven't been retargeted to your skeleton

maiden wadi
warm oriole
#

Always something simple 🤦‍♂️

#

collision was still the actual issue though

mellow pike
#

now to find were I set that

warm oriole
#

Just locate the anim you want, in this case it is probably the run, and right click -> select retarget -> choose your skele

#

Then make sure you swap all the references in your anim BP

frosty heron
#

You can retarget entire anim blueprint to diff skeleton

#

At least in UE 4

#

Alternatively there is also anim blueprint template, should you need multiple skeletons to use the same anim blueprint.

mellow pike
marsh sonnet
mellow pike
warm oriole
#

You can check the retarget manager (I forget what its called) to ensure the bones are being mapped properly. Aside from that you'd need to change your skeleton iirc.

mellow pike
#

got it working , thanks

soft estuary
#

got it working after some tweaks

lunar sleet
# hollow cove bump

Inspect it using the modeling tools and try remeshing it if it has an excessive amount of tris. But also do proper #profiling using Insights and the like to see what exactly is causing it

novel goblet
#

Does anyone have experience with enhanced inputs in blueprints? I am struggling a bit.
I have movement working, but my main problem is a bit more complex.
I have a gameplay ability that I want to call "move" within. In order to call move I need to read the Input Action Value reference into it. (FInputActionValue&) And I'm not sure how to go about pulling that

#

I have access to the player character within it and the player controller etc if that helps

frosty heron
#

Wdym by move within?

novel goblet
#

What I have set up is a branch.
If skill range <= Target Distance -> return true.
Which then activates the skill
If its not true I want to tell it to move player towards location and try again.

#

I have a function that works with this but it needs an input action value so I know if there's anything conflicting with it.

#

think i got it

#

yeah got it theres a simple move to that works... Kinda needs some polish and other factors but for now it'll do

frosty heron
#

Would just look at how top down template does it. Probably with simple move to

novel goblet
#

yeah simple move to is nav mesh based.
It KIND of works but I need to add some stuff to it or overwrite it so if it reaches the location it knows to activate the ability. but for tonight i'm happy. I can now run towards and just reclick

frosty heron
#

Might have callbacks like on move completed, not sure.

novel goblet
#

yeah i need an interrupt or something too

#

because it keeps trying to move on interrupt

#

I'll take a look at it and figure it out

frosty heron
#

Maybe use a move to instead simple move to, there should be pins you can use and have a branch that checks if the movement result is successful.

gentle urchin
#

<=m

#

Should be >=

#

You want to check that
InRange = skillrange >= targetdistance

olive trout
#

Hi yall. Been trying to set up interactive objects with screen space frames around them ala Deus Ex, using this forum post as a guide to at least help me convert a 3d bounding box into a 2d one in screen space:

https://forums.unrealengine.com/t/scene-actors-bounding-square-screen-space/459787/2

Followed the solutions blueprint set up pretty much to a T, which everyone in the thread agrees works but then the result I get is a 2d box that bounces around the screen instead of adheres to the object I want it to as seen in the gif (the one with the red box.) I'm super stuck on this one if anyones got any ideas?

gentle urchin
#

Im doing something akin to this for my screenspace world location widgets I think.. not exactly a box but same principle i'd think

olive trout
#

ideally I'll want it to be a widget pretty much exactly like Deus Ex instead of just debug lines, but I figure this is at least a good starting point for getting the 3d->2d bounding box data

gentle urchin
#

Looks mostly like a centered widget with bounds applied to its size

tight moon
#

I asked this in #virtual-reality so I have a little base but it ddin't work : how do I make a bp allowing me to play sound from an object while grabbing it only ?

#

Additionnally, with the laser I've been working on last time, I want it to react to a specific blueprint only, what do I need to do from this point ?

atomic salmon
#

@tight moonbest would be to have each object know when it is being grabbed and produce the sound when it is; regarding your line trace (laser), you can check if the Hit Actor is derived from a given class or has a tag, and react only in that case. Doing Get All Actors of Class on every tick is not very efficient.

tight moon
#

Well, here comes the dreadful question :
How do I do that 😔

atomic salmon
#

@tight moonregarding the grabbing, you start with having in each actor a boolean variable which is set to true when the actor is grabbed and to false when it is dropped. Then you check that variable and if it is set to true you use that information to play your sound.

gentle urchin
#

If they share a common base, adding the bool to the class should be fairly straight. Then casting the hit actor to the grabbable base class and updating the bool would be the next stepp

tight moon
#

For the sound I had something like this in the object blueprint. Although it wouldn't work since the input wouldn't even start. I need the sound to play only after using the actual input.

atomic salmon
#

You are setting Is Held to false on grab, so it will never go past the Branch attached to the input. It should be set to true on Grab and to false on Release/Drop

tight moon
#

So, added the OnDropped event, the variable is set to true for the grabbed and on false for the dropped. Moved back the rest to the pawn but still nothing 🤔

atomic salmon
#

@tight moonyou need to apply some basic debugging techniques to see what is happening and what is going wrong. For example, put a Breakpoint on the Branch which is called from the input and follow the code from there step by step

#

Do you see the output of that Print String after the branch?

tight moon
#

Well... nope, nothing happens after just pressing an input. It seems it doesn't reach the branch.

atomic salmon
#

If it never hits the branch it means your input event is not being called

#

Which very likely indicates that input is not set up correctly

#

So your first fix is to make the input work properly

tight moon
#

You mean, the variable ? There's a print right after the input and this one works.

atomic salmon
#

That's then different from the code above

#

If you added a Print String immediately after the input event and it prints something, then the input works. If it gets to the Branch and doesn't go past it, it means the boolean variable which controls the branch is False. You need to figure out why

tight moon
#

To be sure there's no confusion : here's how it looks like atm. The first screenshot is in the object BP, the second in the pawn, the 2 are separated (the input won't work if in the object bp). That's where I am rn, and I don't really know why would the held variable be false.

atomic salmon
dry sleet
#

PCG can be packaged just fine -- shouldn't you try to fix the packaging issues rather than resort to the drastic measure of a complete rewrite?

#

You can ask in #packaging or #pcg-framework for assistance if you provide more details about what doesn't work in a packaged build!

tight moon
gentle urchin
#

https://www.youtube.com/watch?v=EM_HYqQdToE should be a good starting place if you havnt watched it already

Announce Post: https://forums.unrealengine.com/showthread.php?101051

This Training Stream takes a look at Blueprint Communication. We find that Unreal Developers of all levels can sometimes struggle through the concepts behind moving data between objects. So in this video we'll take a look at the different ways to make Blueprints talk to one an...

▶ Play video
tall obsidian
dark drum
#

Does anyone know if it's possible to limit the gameplay tags that are shown for a variable selection to a specific .ini?

gentle urchin
#

you can apply some custom filter

#
    /** Returns "Categories" meta property from given handle, used for filtering by tag widget */
    GAMEPLAYTAGS_API FString GetCategoriesMetaFromPropertyHandle(TSharedPtr<class IPropertyHandle> PropertyHandle) const;
sudden nimbus
hidden rampart
#

Set Array Elem literally doesn't add it. The exec only goes when the ItemObject is valid and it goes through and it prints Got Here and false aka the element is not valid , after I literally just add it.

gentle urchin
#

Set doesnt add

#

unless you let it SizetoFit

#

which you've got false

hidden rampart
#

So if you do it in a for loop you don't need to set it to true?

gentle urchin
#

seems your equipment array is empty

#

I usually pre-populate them, and assign a specific index per slot

hidden rampart
#

Because im copying this functionality from an already working system and its not set to true there though.

gentle urchin
gentle urchin
#

you can verify this by either inspecting the array at breakpoint

#

or do "IsValidIndex" on the array

hidden rampart
#

ok I'll do just that. Thank you so much!

gentle urchin
#

(it wont fix you missing entry problem)

#

you need to resize the Items array to how many slots you have (-1)

hidden rampart
gentle urchin
#

that means if whoever equips something, specifices an invalid index, they'll get the equipment added anyways

hidden rampart
#

I just the index to zero to test it

gentle urchin
#

index 100 will also work

hidden rampart
gentle urchin
#

I suppose you got a NumberOfSlots variable?

hidden rampart
#

Yea I can add it

gentle urchin
#

so on beginplay or init you'd just take the empty array and resize it

#

to numberOfSlots

hidden rampart
#

It's weird because in this inventory system I have from a tutorial, I don't see him doing that anywhere

gentle urchin
#

well are the slots added manually to the variable?

#

thats another option (just tedious and not very flexible)

hidden rampart
#

But he never actuallys sets the size of the array

gentle urchin
#

there's really only those 3 options;

  • Resize with array variable
  • Manually add slots to the array variable through the details panel
  • Let newly added items resize the array
hidden rampart
tight moon
#

So, regarding my situation... turns out I just needed to set the variable's default value to true...
That said the variable works constantly, I still don't really know how to make it grab dependant (I've seen the link for the bp video, but I don't really have the time for the 2h and I also don't have any sound on my end).

atomic salmon
#

If you want the grabbed actor to be notified about something else, you can implement a similar logic as for the grab/release. e.g. player presses a button --> input event is triggered in the player --> player checks if it is holding an actor --> if yes, held actor is notified about that event

#

I think you may greatly benefiting from watching that blueprint communication video which was recommended to you. If you have no audio, you can watch it with automatic subtitles.

frosty heron
#

And a beginner would end up spending more than 2 hours anyway learning blueprint coms.

#

If watching the video once suffice, that do be a very small price to pay.

gentle urchin
#

and we all value our own time

frosty heron
#

I didn't know the video existed. Took me months before it clicks on reference and blueprint coms.

gentle urchin
#

same

visual ember
#

additionally, what people really need to start doing is leave their BP spaghetti mess and just think their issues on paper. first establish dry logic what has to happen, then implement it

gentle urchin
#

months of accessed none

#

videos i watched (youtube tutorials) always just "we fix this by doing isValid"

#

which is kinda true, but at the same time not. They never went into the specifics of why it would be invalid, and what that ment

gentle urchin
#

even if the logic can the be quite literal

#

IF X AND Y DO Z

visual ember
#

but people live their lives making conditional thinking and decisions all the time

gentle urchin
#

they do indeed

visual ember
#

so just to the same but for the problem in code

#

IF I want to get on that bus THEN I have to run

#

it's all the same

gentle urchin
#

IF Starving THEN Eat()

visual ember
#

the discrepancy starts with state management though. when they flip the switch, there is no bLightOn, they don't think that way. it just...is, light magically happens and electricity keeps flowing 😄

gentle urchin
#

it quickly spirals 😛

visual ember
#

so I guess realizing that might be quite important. "oh, nothing is going to magically know the light is on, I need a variable for that"

gentle urchin
#

Guess there should be some entry level basics, walking through very basic things in some in-editor tutorial thing

#

nobody really used that feature much huh

visual ember
#

itneractive tutorial...that would be something

#

and you cannot use UE unless you pass kappa

gentle urchin
#

"make this door open, by using the BP_Key, blueprint and setting op the logic for interacting with the door by using the assigned Door_Interface"

#

hmm seems this learning interface has been removed? 😮

#

this little guy

dark drum
#

What are peoples thoughts about storing actor references in a data asset at runtime? The data wouldn't need to be saved on exit or anything. I'm just trying to think of any reasons why it might not be a good idea lol.

gentle urchin
#

you break the static nature of a data asset , i guess

#

I do it myself currently, but I dont really like it D:

#

These days I usually wrap DA reference in some uobject/actor instance for that dynamic data

visual ember
#

why not just in a game state?

#

why tickle the demon?

dark drum
dark drum
hidden rampart
gentle urchin
#

but yes, it's just because of the static part that I dont like it

#

im stuffing thousands of transforms in there currently, and it just sits wrong with me 😄

#

but it was quick and dirty when i did it , and so it just stayed like that 😛

dark drum
gentle urchin
#

can't you just provide world context ?

dark drum
gentle urchin
#

Don't let that stop you 😛

#

You'll be better off 😄

dark drum
#

I feel like this is simpler than setting up a sub system. 🤔

gentle urchin
#

simpler but less correct

#

i guess

#

Im normally using some world manager for actor collections etc

#

but requires world context , as you said

dark drum
# gentle urchin simpler but less `correct`

I guess that depends on what you're trying to achieve. It is nice that I can easily add references to the DA via the editor as well. Saves having to call some logic on begin play to do it.

#

I do feel like I've overlooked something big though but it all seems to work. I guess testing is required.

gentle urchin
dark drum
gentle urchin
#

xD

#

idk, i like doing the beginplay setup, as then I know it just works, for all my actors, regardless of streaming in/out and whatnot

dark drum
#

It seems to handle level changes too. In editor, it just says the actor isn't loaded but updates when you load the level there in.

gentle urchin
#

ouf this smells bad x)

#

but if it works, there's a saying

dark drum
gentle urchin
#

what's the grouping for btw?

#

is it for something like NPC type or something ?

dark drum
gentle urchin
#

I s ee

#

OpenAllDoors

dark drum
#

So the only issue I've found so far with adding the refs via the editor is that if the actor is destroyed at runtime, it'll flag that it's unloaded instead of saying its not found. 🤔 Not sure it's even possible to portray this with just a soft object ref. Maybe dynamically adding and removing them is best.

gentle urchin
#

Yes it is! Superior

visual ember
chrome glacier
#

Hey guys, got a question. ive made a widget/menu when pressing the start button of my controller. Problem is, I cannot seem to go back to my character after making a selection. Once I'm in the UI, the inputs don't listen to the inputs of my character anymore. And within the UI, i tried giving it a ''Close Menu'' button.. But I cannot figure out how to reactivate the movement of my character. (Everything works except moving around).

First image is inside the character BP, second is inside the Widget graph. Any ideas?

shrewd tiger
#

Hi guys
Fsr my Destroy component node is not quite working - any ideas why?

#

The one from reset event

#

This is like a building system

#

Reset is triggered by cycling through parts

ancient stag
#

https://forums.unrealengine.com/t/orthographic-camera-and-multiple-window-sizes/2021809
Anybody here have a solution for this orthographic projection camera issue? When I play in a new editor window and set it to the size of a mobile portrait mode, it becomes really squished. I can’t figure out how to fix this with the current parameters.

tight jungle
#

Hey, Question:
I’m doing physics based character movement in Blueprints, and want to limit the input movement to a max speed/velocity. But allow other physics sources to affect the character freely (exceeding the max cap).

So far I have only been able to limit the velocity as a whole, which negating other sources of physics if they are in the same direction as the already capped max speed. (see image)

Any ideas?

dark drum
shrewd tiger
#

Oh that's smart

#

thanks

young meteor
#

Is it not possible to create a Widget from within a Blueprint Library Function?

ancient stag
tawdry walrus
#

I want to make sure my information is correct,
Is casting to something that has been loaded into memory or into the game world free?

rugged wigeon
#

It’s not free but it’s not expensive

young meteor
#

It is now being created and shown.

rugged wigeon
#

Looks like you have something broken in your tooltip

young meteor
#

Sorry the function in the Blueprint library I'm running is called "ShowTooltip"

#

So it is in that function I assume. And it is "complaining" about the "Create Widget" node

#

Could it be the "Owning Player" part?
The rest is just variables basically.

final berry
#

Okay so I hope I can explain it correctly, but on the left is a part of my references on these actors and the sizemaps are huge. If i'm correct the way on the right should reduce the sizemaps, but I'm not 100% sure. Could someone clarify?

edgy axle
#

How come the Get Component Bounds for a rotated capsule is bigger than it should be? Box shape has the correct size when rotated

final berry
# visual ember can you show those sizemaps?

Well they are even bigger than just this part because a UI knows about the towers and the level management knows about the UI and that level management knows about stuff in other levels and so on and so on. It's a mess and not sure how to fix it so I thought start small

maiden wadi
edgy axle
maiden wadi
final berry
#

I tried that, but it still knows about the mesh 🤔 I'll take another look

maiden wadi
#

Then something else in the parent links it, if you're looking at the parent's sizemap. the parent will not know about a mesh specified in the child.

final berry
#

Okay, I'll check thanks

maiden wadi
#

@final berry As a case point. I have an AnimalBase class here. Has basically nothin gin it except for a specified special AI Controller. It's a character class, so it has a skeletal mesh. But as a noted point the mesh and animbp are empty.

#

B_Chicken on the other hand has a skeletal mesh linker. Because that class has it specified in the MeshComponent.

final berry
#

Crystal, thanks for the clarification 🙂

dark drum
maiden wadi
#

Yeah, they will. Any variables as well that have been populated.

heady burrow
#

question, it gets very verbose when I need to spawn an actor which can take different values depending on booleans or some other conditions, is for example a way to have a branch node without an execution pin?, so I can not interrupt the flow, nor create 2 different spawning boxes

#

Im sure many encountered this encumbrance before.

maiden wadi
#

Select probably

tight jungle
outer brook
#

Hey fellas, i have a question regarding a "coding"-style in blueprint. In the picture i provided you can see "target arm length" outputs its value with other variables into "FInterpTo". This function then outputs its value into "Target Arm Length" back again. All this happens within the exact same step for the "SET Target Arm Length" here.

My questions are: Is that a common coding style here? And am I right to assume that the value of "Target Arm Length" gets read first and set at the end after wards, e.g. in C# "targetArmLength=FInterpTo(Current, targetArmLength, DeltaTime, InterpSpeed);"?

heady burrow
#

if its usable at all in my case