Button Prototype Kit

This is the support thread for theButton Prototype Kit](Button Prototype Kit in Blueprints - UE Marketplace) asset. You can find therelease post here.

Please write here all the problems you encountered, and all the improvements you would like me to make to this asset.

Thank you.

After the last update to support 4.24, a few samples in the demo level were broken.

They are now fixed, but the version is in the Pending File Update state in the marketplace.

Please update the package once the new code is available.

Hello! Thank you for this wonderfully flexible system! I’m doing my best to learn how to use it properly at the moment via your excellent documentation at PuzzleKit · Button Prototyping Kit

I am finding it a little advanced for my Blueprint skills right now though, so I wondered if you could advise me a little.

Using Button Prototype Kit, how would you recommend implementing the following:

  • A simple dynamic light that listens to one or more buttons to enable / disable the light actor
  • A modified animation behavior that scales an object rather than moving it or rotating it
  • Correctly access the current state from within a child BP (eg, in order to add additional graph functions into one particular actor that is a child or grandchild of the prototype BP)

I think current my solutions are probably very poorly implemented (hacky) and don’t make proper use of the clever design on the prototype button.

Hi,

Thank you for your review.

First of all, I believe everything you want to do, can be easily achieved with this asset, so thank you for choosing it.

  • I drafted a quick tutorial on a light switch and added it to the documentation here: Making an interactive light · PuzzleKit
  • I am now doing a video tutorial on this (thank you for the idea) and hopefully, it will be up the following days.
  • This is something I did not think about, but, is definitely possible. You can tackle it in multiple ways:

  • the quickest way will be to directly modify the [FONT=courier new]BP_PK_ButtonPrototype, specifically the MoveLerp function (that is called on the AnimateHandle event).

  • another way is to actually subscribe to the state change event, and change the scale as desired. Maybe the new light switch example will help, or, maybe a look at the [FONT=courier new]Blueprints/Presets/Display/BP_PK_DisplayBase.

  • If you created a child blueprint class, you already have access to [FONT=courier new]PK_HandleOwnStateChanged and [FONT=courier new]PK_HandleOwnChangeFailure events. I believe that is the place you should add your logic.

If you need more information, please reach me at the support email address, with the exact flow you want to implement, and all the problems you may have, and I will answer, in detail, as soon as possible.

Have fun!

This is wonderful! Thank you so much for your efforts! Your light example makes everything a lot clearer to me! I’ll experiment with the scale animation too. I’m not sure where to find the support email address, can you please point me in the right direction?

Thank you for your kind words.

You can find the support email on my marketplace profile page: Content by PuzzleKit - UE Marketplace

Sorry first for my English. I am a little new to this blueprint, my question is how to implement it to any character. Greetings

Primero perdón por mi ingles.
Soy un poco nuevo en esto de los blueprint, mi pregunta es como implementarlo a cualquier personaje.
un saludo

Hi,

If you insepct the **PKFirstPersonCharacter **from the Demo folder, you can see how the functionality from the demo level is done. That also takes into account mutiplayer support.

If you do not need multiplayer support, you could do, in your character, something like in the attached image.

Let me know if I was clear enough, or if you need more information.

Thanks,
PK

Hi,

I created a sample tutorial video for creating character interactions with button prototype asset. Find it here: https://www.youtube.com/watch?v=nWkl…J6wDi&index=11

It uses the First Person game template and interacts with buttons:

  • when the projectile hits a button
  • or when the camera is pointing at a button and you click the mouse (like in the demo level)

Hope you find it useful,

Have fun!

Hey there, A+ asset pack! Quick question, can I edit the Listen To array on an object’s ObserveReactComp after it was spawned into the level?

Thak you for your apperciation.

The *ObserveReactComponent *was ment to have everything it needs on begin play, so the event binding is done on BeginPlay. If you add something afterwards, it will not work. This is becase, depending on the selected aggregation method (*Passthrough, Aggregate *or *AddTobuffer), *more calculation is done on Begin Play based on the number and the state values of the actors from the ListenTo array.

But, assuming you want to have A reacting to B state changes: instead of adding B to the Listen To Array of Button A, maybe you can add A to the *Send Actions To *array of button B. Let me know if this works.

If the above solution does not work, It would be great if you could send me an email with your setup, and tell me exactly what you want to achieve. I could, then, provide more guidance, or, if possible, I could include something in the next asset release that might help with your game.

Have a great day!

Do you have a list of the orientation of the pipes, great addition but no idea what way round they go for each of the shapes, what is LeftUp or DownLeft etc etc LOL

Hi,

Yes, I aggree the naming of the pipes can be a bit confusng. What I did, I gave each possible state for the pipe, the short name for each one of the directions is has connections with. (Lt - has left connection, Rt - has right connection, Up - has up connection, Dn-has doen connection.) I also read the connections clockwise.

To see this, you can go on each pipe, and inspect the IterativeStateComponent States array, and have a list of all possible states (positions) for that pipe.

Here are some naming examples,

  • the** L** segment, in this position is UpRt, as it can connect with up and right. If you would rotate it by 90 it will have connections to right and down, thus DnRt.
  • a I segment, in this position will be UpDn. If you wourld rotate it becomes **---- **and it will be LfRt
  • a + segment, is LfUpDnRt no matter hwo you rotate it, as it will have connections in all 4 directions.

If you find this confusing too, you can rename all states in the IterativeStateComponent of the pipes, and then change the Rule condition accordingly. So, state names for each pipe could be as simple as 1, 2, 3, 4… , and then have the correct succession in the Rues array.

I hope this answers your question.

Please let me know If ther is anything else I can help you with.

Have fun!
PK

Is their a way you can do a computer system kit, so you can click on the computer and then look at emails or notes etc?

I do not think this you can do this with this asset alone. But, I am sure you can combine it with other assets (that maybe have that browser email/notes functionality) to achieve the desired result.

In the demo, I can not open the lockbox without entering a code. How do you add protection against clicks on the lockbox itself? So I have to enter code and the lock box will open.

I try to create a similar scene here without success. Copied the same settings but lockbox can be clicked and opened without me having to enter code. The lockbox opens with the correct code otherwise but I want to prevent being able to click on the lockbox to open. Do not want anyone to cheat =)

See attach file for my settings:

The only thing I do not succeed with is the lock function. How can you prevent someone from clicking? I want to lock the lockbox completely so you can only use buttons etc.

Not just lockbox. I want to be able to lock the Barrier so you can not click on it. Just use the button to open it.

Very good asset! It makes it very easy for me. It’s just frustrated that I do not manage to solve with lock function. I can only copy and paste from Demo Lockbox and it works fine but I want to learn me to lock myself.

Hi,
The way you prevent activating a button depends on how you implemented the interaction.

What I did in the demo, is add a [FONT=Courier New]PKNoInteraction tag to button prototype actors I do not want to be clickable:

And then, in the [FONT=Courier New]PKFirstPersonCharacter, in the Get Valid Hit Stateful Actor,

tag2.png

I exclude actors that have the [FONT=Courier New]PKNoInteraction tag.

I hope this helps,

Have a great day,
PK

Thank you for reply. It solved my problem with your help.

Now I wonder if I create a blueprint actor as a spawn when I have built three items together, the BP_Final appears in the scene and in it I want a trigger box to trigger the buttons. Is there a good way to do it?

I need trigger box inside blueprint actor to trigger the buttons. I tried it but listen to can not find that trigger inside blueprint actor. It only finds what is in the project and not inside the blueprint actor.

Hi,
So, the ListenTo array from ObserveReact is per Actor Instance. That is so you can have one actor blueprint, and multiple actor blueprint instances in your map, and each actor instance listens/reacts to a different list of actors.

Of course, you can manually add items to this array in your blueprint. There are several examples in the Demo Map, where I added items to ListenTo Array. Please take a look at these puzzles:

but, from what I understand from your post, you just want to trigger a button.

So what you could do, is simply call PK_DoAction(NextState) on that button, from your trigger. You can inspect how this Collision Action Triggers are programmed in blueprints.

Let me know if this helps.

1 Like