Using an Object Pool, Scripting a Pack of Cards - Udon / VRChat SDK3.0

  Рет қаралды 5,699

PlayerBush001

PlayerBush001

Күн бұрын

Пікірлер: 80
@WACOMalt
@WACOMalt Жыл бұрын
To drag multiple, keep number of objects set to 0, then select all the objects in the heirarchy and left mouse drag them into the " > pool" line. You'll have to first lock your inspector when you have the pool properties visible (lock icon in top right of the inspector), or you'll lose the field when you try to select multiple objects
@PlayerBush001
@PlayerBush001 Жыл бұрын
Thanks for the tip! I made a follow up video about a month after making this video (kzbin.info/www/bejne/mIuqgJd9fqqiidU) with the help of a commenter. Greatly appreciate it when someone fills in any gaps that I may have missed ^^ Also, you can drag and drop more objects into the array, even if it already has objects in it. That being said, you do need to be careful of duplicates and empty slots, so saying it needs to be empty is probably best ^^
@boneitch
@boneitch Жыл бұрын
well... I shouldve def read this comment before manually dragging a whole ass Tarot deck into the pool, 1 by 1. But at least I won't have to do that ever again. Thanks ^^
@One_Winged_King
@One_Winged_King Жыл бұрын
You have no idea how much of a headache you just saved me... you and the video creator are absolute heros right now for me...
@Awsome2464
@Awsome2464 2 жыл бұрын
Dude, I've been trying to get a fully functional deck of cards in my world for months. And while I was able to get the basic layout and spawn set up, everything else had been a struggle. So thank you!
@PlayerBush001
@PlayerBush001 2 жыл бұрын
Nice one figuring it out, glad you liked it ^^ Hopefully this was just a touch up
@TheKally
@TheKally 2 жыл бұрын
Right when i am trying to make a card game, you post this. Thank you Udon wizard!
@PlayerBush001
@PlayerBush001 2 жыл бұрын
haha, perfect! Good luck with your project ^^
@nameredacted2220
@nameredacted2220 2 жыл бұрын
Thank you so much for always making these tutorials, i always appreciate how simple it is to follow and to also apply you own knowledge to, i hope you do more in the future, maybe some for horror games like sound triggers and simple animations, tho i just hope you enjoy making these videos as much as i enjoy learning from watching them, thank you
@PlayerBush001
@PlayerBush001 2 жыл бұрын
Glad your liking them ^^ I did plan on covering how to do jumpscares seen in FNAF: Help Wanted, but I'm currently working on some other tutorials for now
@TheKally
@TheKally 2 жыл бұрын
Figured out how to drag and drop multiple objects into objectpool. Lock inspector then select all objects and drag and drop right above the size number bar. Hope this helps in future, certainly helped me as i had a 100 cards lol.
@PlayerBush001
@PlayerBush001 2 жыл бұрын
Ah, thanks for the info! Planing to do a followup video covering a couple of small things, so I'll definitely add this in (with credit of course ^^) And yea, 100 items is pretty rough...
@Plaguued
@Plaguued Жыл бұрын
How would I go about getting the discard pile to display the last card placed down for let's say "uno"? as I want to be able to see the last card that was played
@PlayerBush001
@PlayerBush001 Жыл бұрын
unfortunately, I have yet to make a video where I change the material on an object, so I don't really have a tutorial to help explain this... Basically, you want to get the meshRenderer of both the target object, and the card that just got respawned. We can then use the node 'meshRenderer, get material' on the card's meshRenderer to get it's material; and then we can use 'meshRenderer, set material' on the target meshRenderer, to change the material of the first slot on it (If the object has multiple materials on it, and you want to change a different material than the first, it becomes a bit more of a pain in graph) To do this, you would simply script it like... 'event, OnTriggerEnter(collider)' --> MeshRenderer, set Material(targetMeshRenderer. *insert mat from card*) **mat from card** = "collider, get gameobject' --> 'gameObject, (type) get component(type meshRenderer)' --> 'meshRenderer, get material" That probably looks a little cryptic (cause it kinda is), but those would be the nodes that I would use Hope that helps ^^
@PuddingWhispers
@PuddingWhispers 2 жыл бұрын
Thanks so much for your tutorials!!
@PlayerBush001
@PlayerBush001 2 жыл бұрын
Glad you like them! ^^
@TheClioryder
@TheClioryder 10 ай бұрын
im assuming the new networking update broke the synced triggers on this as it no longer works, I tried adding in the RequestSerialization node to fix but t didn't :(
@AudacityVR
@AudacityVR Жыл бұрын
I have 1 maybe 2 issues. When spawning a card it does not automatically equip to the players hand, it just falls to the ground. I came up with adding a box collider to the table they are on, but then it just falls onto the table. Is there away to make the card auto equip to the player hand. Additionally how can allow players to pass through the tables box collider but not the cards?. 2. The card return
@archerman6822
@archerman6822 Жыл бұрын
If you have multiple item pools, is there a way to detect from what item pool each items are from?
@PlayerBush001
@PlayerBush001 Жыл бұрын
you can use an 'object pool, get Pool' to get an array of all the objects in a pool. Then you can loop through that array, and see if your object equals one of the objects in the pool ^^
@archerman6822
@archerman6822 Жыл бұрын
@@PlayerBush001 is there a way to fetch a item pool without passing it as a variable? Maybe a way to hardcode the pool? I am making a little farming minigame in my map and there is a pool for seeds, wheat items, wheat prefab, purchasable garden beds... and if the pool is not part of the item prefab (like for example the seed pool isn't in the pack of 4 garden bed), then I have to manually assign everything, which tends to cause a few bugs DX
@PlayerBush001
@PlayerBush001 Жыл бұрын
I'm not entirely sure on your use case, as it would depend on how you went about coding it, but perhaps having an int to serve as an id would be a good system for you. You could then check if your seed that works with object id 2,5,8 is trying to interact with one of those numbers. If it's trying to interact with id 4, then it knows that it can't, without having to check what pool that object is in. It will require you to either have an udonScript on each object (not too bad if they aren't running any code or synced variables) or you could use 'transform, get parent', to get the parent gameObject that has the id on it. Alternatively, you could give it a gameObject tag. These can't be backed in (as they don't get uploaded with your build) but you can make them at runtime. Or, a much simpler method is to add a string to the objects name (though keep them short for preformance reasons). Make it something like 'S Seed -', and then you can use a 'string, contains' node, to check if that object has that string in it's name
@TrayceInSpace
@TrayceInSpace 2 жыл бұрын
Is it possible to make a button that returns any active objects?
@PlayerBush001
@PlayerBush001 2 жыл бұрын
yep! You would want to use the node 'object pool, get pool' to get a gameObject array of all the objects in your pool, then cycle through that array (kzbin.info/www/bejne/qWTQi2qJgcugsKs), and play the node 'object pool, return' on all the gameObjects Hope that helps ^^
@TrayceInSpace
@TrayceInSpace 2 жыл бұрын
@@PlayerBush001 Thank you! You are an absolute lifesaver! You should be the one writing the documentation for Udon XD Seriously, though, your tutorials are some of the most straight forward and I feel like if you did a comprehensive series on Udon, it would be the best one.
@SamwiseAaron
@SamwiseAaron Жыл бұрын
Amazing tutorial as you usually create! Here is a question, since I never do anything exactly like the exercise to see if I understand it... My issue is, I want to return the object just before spawning the new one automatically. I was doing this by keeping the last one as a variable. Works great UNTIL the Owner Changes. The last object of the previous owner doesn't seem to return when I run the return method. What step am I missing? I transfer ownership to both the pool and the object before I try to return it??? Any thoughts?
@PlayerBush001
@PlayerBush001 Жыл бұрын
Thanks! Glad to hear you're experimenting ^^ As for your question, I'm not entirely sure as to the best way to approach it, as I'm not sure exactly your use case. The first thing that comes to mind however, is you need to sync that gameObject variable. Currently, when the ownership transfer happens, the new client doesn't have any knowledge of what gameObject spawned last; as that was only stored on the host client, and was never shared. Now, you can't sync gameObject variables, but you can sync it's position in the pool using an int. To do so, I would keep your gameObject variable, but get it so that whenever that variable changes, use the node 'object sync, get pool' to get an array of all the gameObjects in the pool. Then you can cycle through that array, and see if they match the gameObject variable (kinda like I did for admin room (kzbin.info/www/bejne/n5etlIOQi52Harc) but use a 'gameObject , equals' node instead). When you get a match, make your synced int = the for loop's int index. Then we need some code for when the host leaves. Use an 'event, onOwnerShipTransfer' node, and get it to grab the gameObject in the pool, based on the synced int, and set it as our gameObject variable ("object sync, get pool' --> 'gameObject[ ], get (synced int)' --> 'set gameObject variable" Alternatively, you could use a 'event, onEnable' node on the summoned gameObject itself, and get it to tell the pool parent that it was summoned. That way, every client will know when an object was summoned, and can do their own code to keep track of the last object summoned. This will make it run fully locally, and will help with any latency during a transfer, that might cause problems if it happens mid summon. Hope that helps ^^
@romanchannel69
@romanchannel69 Жыл бұрын
0:39 Well, i made a script that creates multiple clones of my prefab card and after that assigns each clone to the VRCObjectPool array. ChatGPT helped me though
@ArthurtheCrusader
@ArthurtheCrusader Жыл бұрын
Using this method is there a way to limit how much a player can spawn? For example I'm trying to use this whole object pooling system for an rpg world. But I dont want a player to spawn a crap ton of weapons, is there a different system I should be using or how can I limit how much a player can spawn?
@PlayerBush001
@PlayerBush001 Жыл бұрын
There is, but how it works would depend on what you are after. To start of with, you can get an array of all objects in the pool, but using 'object sync, get pool' node. For my first method that works like you explained, you will need to create an int variable that says how many you have spawned, and another to say the maximum. Then all you need to do, is when they go to spawn in an object, we will want to check how many objects we have spawned. First set your current spawned int to 0. Then get that pool of objects and use a 'for' loop, and check every object in the pool. First check if they are active (gameObject, activeSelf), and then check if they are owned by the local player (networking, isOwner). If they are both active and owned by the player, then they are something we spawned in, so we want to add 1 to our 'currently spawned' int. Once it goes through all objects, we will now have an int of how many we have spawned. Then, we can do a branch check, to see if we have spawned less than the maximum, and if so, then we can spawn in another. (Note: while you can normally use 'gameobject, active self' to check if an object has been spawned, be careful as other scripts can also make these object active, even if you haven't spawned them in) (Note2: while you could just add or remove 1 to the 'currently spawned' int whenever we summon or return and object to the pool, checking all objects is better for catching any desyncs. This however is not recommended if you have 50- 100s of objects) The second method however, is perhaps better suited to what you may want. For this, you will want to create a gameobject[ ] variable, and this will be your summoned objects. Then, whenever you spawn in an object, add that object to the next available slot in the array. However, before you do that, check if they array is full. If so, get the first object in array, and tell it to return to the pool. As for the other objects, move them all up one slot in the array. Then, now that we haven't got the first object in the array anymore, you will have a slot for our new spawned in object. The advantage of this method, is that it will always allow you to spawn in a new object, and it will just return the oldest object to the pool. (Note: you will also need to remove and resuffle the object array whenever you return an object by another means) Hope that helps ^^
@ArthurtheCrusader
@ArthurtheCrusader Жыл бұрын
@@PlayerBush001 I appreciate this response alot and since then I have been trying for hours to attempt to make this work but cannot, it could just be my lack of understanding with U Sharp lingo, thank you so much still though your videos are always immensely helpful
@PlayerBush001
@PlayerBush001 Жыл бұрын
I used this comment to do a test video of a new video format I'm considering. This one ended up being a bit of a failure, as it was way more complicated than I wanted... at least when done in graph, where loops aren't really that intuitive. Either way, here's my response with visuals to go with it: kzbin.info/www/bejne/povMp52Jpd2dhZY Hope it makes things at least a little more clear ^^
@ShaneTheBane
@ShaneTheBane Жыл бұрын
Seems to be an issue with this method, or with how pools work. But when two+ people are drawing from the deck at the same time in rapid succession, the pool gets confused on who to send one of the cards to, sending it to one player first, then teleporting it to the other player, but that other player would've already gotten a card from their button press, meaning if both players hit the button 5 times, one will have 6 cards, and the other will have 4. Have you experienced this? And do you have a fix for it?
@ShaneTheBane
@ShaneTheBane Жыл бұрын
Example: Person A and Person B both click the spawn button 5 times at the same time to spawn 5 items. Both are spawning the items next to theirselves. Person A is supposed to spawn items 1, 3, 6, 7 , and 9 while Person B spawns 2, 4, 5, 8, and 10. However, during spawning, Person A's item 7 might spawn next to Person A but will quickly teleport to Person B's spawn point as if the pool registered the call from Person A and was going to give them item 7 then registered the same call from Person B a frame later, and chose to give them item 7 instead, resulting in Person B having 6 items next to them and Person A having 4
@PlayerBush001
@PlayerBush001 Жыл бұрын
It's less of a problem with the pool system, and more with how I set up the networking in this tutorial. Vrchat uses a 'master - slave' system for it's networking. this means that only the owner of the object says what objects are active in the pool. When you click the button, the script that I showed in this video takes ownership, and then spawns an object. However, when you take ownership, you say what objects are active from your view, and then make your change of one more object active. the problem is that when you become the owner, it is just copies what it sees, so if someone takes ownership but has it stolen back before the other player clicks it, the first player's values wouldn't have been shared, and thus any changes they made will be discarded. The fix for this, is to avoid changing the owner. For this, first remove the 'networking, set owner' part of the code. Then, create an 'event custom' that spawns in an object. Then, on 'event, interact', use an 'udon behaviour, send custom networked event' node to tell the owner of the object to play that event. The reason I didn't do this in this tutorial however, is that ever since october 2022's lag-pocalypses update, vrchat's networking has become super delayed. In a world is 6 or more people, for those who are not the owner and have a good connection; they should see the card spawn 1-3 seconds after they click the button (there and back delay). Alternatively, using the method shown in this tutorial, you will have to have the other person wait that amount of time before clicking the button again, otherwise the first person's objects won't be saved. However, the difference from a user perspective is: when changing the owner, it assumes it now has ownership, so it will start spawning it immediately, so it *feels* like there is less lag then there actually is. It is all about the trade off, and how you intend to use it with your world I hope that helped clarify the problem. Good luck ^^
@ShaneTheBane
@ShaneTheBane Жыл бұрын
@@PlayerBush001 awesome! Thanks for the info. I'll give that a try
@ShaneTheBane
@ShaneTheBane Жыл бұрын
@@PlayerBush001 I guess you could maybe have best of both worlds by checking if owner has been changed in the last, like, 2 seconds, and if so then run the event without changing owner, and if not, then it's safe for you to change owner and run the event, right?
@lectures-dr.kevina.richard5015
@lectures-dr.kevina.richard5015 2 жыл бұрын
Thank you for this tutorial! I'm just having an issue trying to get the objects to spawn from the spawn point, they spawn, but from where they were placed in the room. Should I not have them set to active?
@PlayerBush001
@PlayerBush001 2 жыл бұрын
Glad you liked it ^^ At 2:40 I show how you would change the 'spawn location' of the card, by teleporting that object to a new location as soon as it spawns in. Do note that, if you are instead making an object 'set active', instead of using the 'objectPool, tryToSpawn' node; then while it may look the same, it isn't actually calling the object from the pool, and the object is still considered not spawned in. If you are however spawning it in with 'objectPool, tryToSpawn' node, then it may be a problem with ownership. If you are not the owner of the newly spawned in card, then you won't be able to change it's position. This will show up as other players not being able to change it's position. At 10:14, I show how you would take ownership of the cards themselves to fix this issue. Hope that helps ^^
@KojiKamori
@KojiKamori 2 ай бұрын
Are there any tutorials like this but in U# instead? Noodles are very confusing to me.
@PlayerBush001
@PlayerBush001 2 ай бұрын
I would recommend looking at c# videos for base unity to learn more about that. If you want specifically udon scripts, all of vowgan tutorials show both the graph and the script. I actually learnt object pools from one of his videos ^^
@Sho_Jitsu
@Sho_Jitsu 2 жыл бұрын
Thank you for the tutorial! I found a world that had footstep sounds wherever you walked, and it changed based on what you walked on (dirt, wood, grass, metal); could you do a tutorial for that please? Thanks!
@PlayerBush001
@PlayerBush001 2 жыл бұрын
Glad your enjoying them! ^^ as for the footsteps, I think I've seen an asset for this, but I can't seem to find it. I'm currently working on a bunch of other tutorials right now, but I'll look into it ^^
@Sho_Jitsu
@Sho_Jitsu 2 жыл бұрын
@@PlayerBush001 Thank you so much!
@DR-ys7rl
@DR-ys7rl 8 ай бұрын
You can lock the inspector window (top right padlock icon), then all you have to do is shift select and drag into the array. I hope this helps. :>
@PlayerBush001
@PlayerBush001 8 ай бұрын
Thanks ^^ Seems like the pinned comment was lost at some point. Repinned one linking towards the followup video showcasing this. Appreciate the helpful comment ^^
@yumily16
@yumily16 2 жыл бұрын
hi, I'm doing the card game "ONE" I followed all the steps but it doesn't look like the cards when I grab the bucket where they come from
@PlayerBush001
@PlayerBush001 2 жыл бұрын
Sorry a little lost as to the question... If your wondering how I got the cards to be held the way they are when I pick them up, have a look at the settings I have on my card gameobject, that I show right at the start of the video. It's the same-ish settings as I have on my torch video tutorial, and I believe I went into detail in that video, so feel free to check that out if you're lost
@caymond1966
@caymond1966 2 жыл бұрын
Hey, thanks for the video, but I am having an issue where the entire game crashes. When a non-instance owner uses a spawner when the pool is exhausted, the game crashes for that person. I have copied the code as you said, so everything works great except for this circumstance. I am not a coder, so only understand the basics of how this all works. I tried doing more validation checks, but it didn't change anything. Help is appreciated, thank you!
@PlayerBush001
@PlayerBush001 2 жыл бұрын
Udon runs in a virtualized mode, so it's every unusual for it to crash a game. I also just tested my project with what you said, and it works fine for me. Not to sure how I can help here, but perhaps reinstalling your sdk might help. Otherwise, I would ask about it on the vrc discord, where pics can be posted that greatly help the debug process. Thanks for bring up a potential bug though ^^
@caymond1966
@caymond1966 2 жыл бұрын
I discovered it's not the non-instance owner, but when the person who attempts to spawn tries to use it after someone else exhausted the pool. Maybe trying that situation will reproduce the bug?
@PlayerBush001
@PlayerBush001 2 жыл бұрын
I've been able to reproduce the bug Looking at it, it seems that the 'objectPool, tryToSpawn' node is causing the problem after the ownership transfer. It's not a case of server delay, as it still crashed when I gave it an overkill 10 second delay. This is a pretty big bug to have found.. though I'm not sure as to an easy solution. The best I came up with (while keeping the ownership transfer) was to cycle through the object pool, and check to see if there was still an object in the pool that was inactive and could be spawned in. The thing is, it being inactive doesn't actually means it's returned to the pool, so it's not a perfect solution. I don't believe there is a way to check how many objects are left to spawn, but 'try to spawn' should do that anyways. I'll have to ask around The other solution is to avoid the 'networking, setOwner' node altogether, and replace it with a custom event. Then plug the interact into a 'udonBehaviour, sendCustomNetworkedEvent' that tells the owner to play the custom event. The networking will make it a little laggy, but it shouldn't be that bad. I would go with this method for the time being. Thanks for bringing this bug to my attention ^^
@caymond1966
@caymond1966 2 жыл бұрын
@@PlayerBush001 Thank you for the replies, and for the help on Discord (you probably know my Discord username by now lol). I got it to work with the check for setting the bool variable generated from the for loop checking the Object Pool. I would have never been able to do this myself, but I learned a lot about Udon Graph in the process. This really is a fun hobby, especially with helpful people such as yourself - thank you!
@PlayerBush001
@PlayerBush001 2 жыл бұрын
Oh no, I think you know mine too XD Glad we got it working.. though it feels kinda half complete. I'll be doing a followup video on this that will cover a couple of things, so I'll definitely be sure to add this too
@bulbousfungus
@bulbousfungus 2 жыл бұрын
This is a great tutorial! Although quick question, is it possible to make the object pool spawn infinitely? Or at least instead of an object pool, how would I be able to go about making a singular object spawn infinitely? I want to use the spawner for a world for me and my friends and have them optionally be able to dump the objects they've spawned in a trash afterwards but I don't want to put a limit on the amount of objects that can be spawned nor do I want them to be respawned after being deleted. I know this might be a little inconvenient to do on VRChat but I haven't been able to find any other solution. Thanks in advance.
@PlayerBush001
@PlayerBush001 2 жыл бұрын
Technically yes... but there is a big catch. Unlike using an object pool, to literally spawn in an object, you will want to use the node 'instantiate, instantiate', which will spawn in an object at 0,0,0; with a gameobject output so you can do things like grab its transform and move it to where you want it. Vowgan actually has an older tutorial covering this, and it shouldn't be too outdated to be useful. However, whenever you spawn in an object, it will only be local. There is no way to sync up an object that was spawned in, as vrchat gives an id to every object when it builds the world/ loads the world, so any objects made afterwards have no way of knowing each other (this is something that neos has over vrchat). So, you can spawn in an object, but no one else will be able to see or interact with it; even if they too saw an object spawn in. Now, as for what you're after, I don't think an object pool is completely unusable. If you were to create an object pool of say, 400 objects, that should be plenty for most activities. This is getting kinda advanced, but you could have a script or animation on each of the objects, that changes the mesh, material and what udon scripts are active, based on what it was supposed to be spawned in as. This means that, for example, even though it spawned as a gun last time, the second time it spawns, it can now be a dice instead. This would mean that while you are still limited to 400 objects, at least this would mean you could have many different types of objects. Spawning in objects is a bit of a weak point of vrchat, so currently, using an object pool is the better option for beginners that want synced objects; and even then object pools aren't all that beginner friendly. Hope this helps ^^
@DJRussellBrian
@DJRussellBrian Жыл бұрын
Hey brother! I’m hoping you can point me in the right direction. I’m trying to teach my autistic son how to read and he loves vr. He doesn’t like when people test him because he doesn’t like to feel stupid when he gets a word wrong. My question is, if I wanted to make flash cards with an apple on one side and an a on the back side so he can quiz himself.. would this be a good work around? It’s almost the same thing right? Also could I make an object pool on interact on the actual cards that plays an audio clip of me sounding out that letter? Lol I guess I gotta do some testing
@PlayerBush001
@PlayerBush001 Жыл бұрын
Oh, that sounds interesting! Personally, I would use this method to spawn in a random card, and to avoid go over ones he's already covered; and to avoid clutter and pickup jank. As for the cards themselves, they can have their own udon script, so they can have as much logic as you would like. To play a sound, instead of using 'event, interact', I would instead use 'event, on pickup use down', and get that to plug into an 'audioSource, play' node; to play a sound whenever they hit the trigger while holding the card. If you need some examples, have a look at my flashlight tutorial for the 'event, on pickup use down', and one of my first tutorials on how to make a 'play audio' button, for the 'audiosource, play' node Hope that helps, and good luck! ^^
@DJRussellBrian
@DJRussellBrian Жыл бұрын
@@PlayerBush001 big time dude I support you now . Gotta patreon?
@josrral9991
@josrral9991 2 жыл бұрын
bro u are the best thanks for teaching us this
@PlayerBush001
@PlayerBush001 2 жыл бұрын
No problem! Glad your liking them ^^
@SkyZi_
@SkyZi_ 2 жыл бұрын
Umm kinda weird request but it would be nice to see a video showing common mistakes while coding in udon graph, after few hours of struggling with my code not working i found out that VRCPlayerApi TeleportTo cannot have multiple nodes connected to it so my code wasn't working even though everything looked fine
@PlayerBush001
@PlayerBush001 2 жыл бұрын
That would be an interesting idea for a video, but I just don't know what I would cover in it. The most common mistake people have, is just not fully understanding what everything does and so they just start throw in a bunch of nodes that might work and just see what sticks As for your comment on 'PlayerApi, teleportTo' node, this isnt actually the case. You can have as many nodes before, after or plugged into the inputs of the node. None of that should mater. The only thing to be careful of is that it can only be used to teleport the local player, and can't be used to teleport other players. If you're after that, then you need to get them to play the node themselves with a networked event or the likes. If something was breaking it, have a look at my 'how to debug your code' video, to see how you can find the error in a seemingly correct bit of code. Hope that helps ^^
@Lukipl4y
@Lukipl4y 2 жыл бұрын
Can someone help me? idk if you heard about AvatarImageReader, I'm using it to update a list of names and I wanted to give benefits to whoever is on the list.
@PlayerBush001
@PlayerBush001 2 жыл бұрын
That's a pretty advanced prefab, that I myself haven't really looked into much. All I can say is that if your not using the new udon# 1.0 (the one that the vrc companion app uses), then the latest version won't work
@necatron73
@necatron73 2 жыл бұрын
Trying to create a posable ragdoll for my nightclub world. I've got a gold statue guy (like the street performers you see) I want to be able to change his pose in world so that when people join they can see him update his position each day without me having to reupload the whole world each time.
@PlayerBush001
@PlayerBush001 2 жыл бұрын
I mean, all the statue would be is a regular avatar model, with bones and all. Then you just need animations of it moving. I would then probably link it to an int that says what animation to play, and then change that int in reference to the day (as the clock assets do). There is also an asset that allows you to change info about a world via an image put on an avatar pedestal/s, which could be useful if you want to randomize it up a bit, though I forget it's name Hope that helps ^^
@wunderburst
@wunderburst 2 жыл бұрын
Thank you! :)
@PlayerBush001
@PlayerBush001 2 жыл бұрын
You're welcome ^^
@wolfythewolf6512
@wolfythewolf6512 2 жыл бұрын
That is how i can make a game plush the camera video and boom you have a game only thing i will take 3 days mostly made when i will give a go so thx
@PlayerBush001
@PlayerBush001 2 жыл бұрын
Good luck! (been 3 days, did it go well?)
@romanchannel69
@romanchannel69 Жыл бұрын
I bet with UdonSharp u can make it way faster and easier. Sigh there is a lack of UdonSharp tuts
@PlayerBush001
@PlayerBush001 Жыл бұрын
There is a lack of udon# tutorials, but that is mainly because most of it can be learnt from c# tutorials. In fact, it is usually better to learn from them, as there is a larger audience, so you tend to get better tutorials that stick to best coding practices. I try and cover a couple of things that are weird with udon#, but otherwise I just do stuff for udon graph. Personally, if I can't figure out something in udon#, I'll open it in graph and see how the nodes' inputs and outputs are setup, and that often helps demystify some of the weirdness; so hence why having a good understanding of graph can be useful (though not required by any means) If you really want udon# tutorials, Vowgan does a half-half approach, where he shows how to do it in graph, and then in sharp. This can be helpful to see the similarities between the two as well ^^
@romanchannel69
@romanchannel69 Жыл бұрын
@@PlayerBush001 Got it. I was struggling to make my own solution for a card game with UdonSharp without a pre-made component till i found your video. Thanks for the response, i appriciate
@endasil
@endasil 11 ай бұрын
FFS, I hate idiots that put ads in the middle of videos.
@PlayerBush001
@PlayerBush001 11 ай бұрын
If you're referring to this video, according to the settings it should be disabled. For a tutorial, a mid roll ad is pretty bad
@endasil
@endasil 11 ай бұрын
Well, apparantly they don't give a damn about how you think ads should be placed in your videos then@@PlayerBush001 :( I really hate these and wish youtube would stop being so damn greedy and put in disruptive ads. And I wish people would stop being so damn stupid to click those ads so they stop being profitable.
@danlovesmothers5596
@danlovesmothers5596 2 жыл бұрын
sounds like a lot of shit for just cards in vrc when NEOS VR is easier to do! Are you payed by VR chat?
@PlayerBush001
@PlayerBush001 2 жыл бұрын
haha, I wish! but nah, I just enjoy the platform, and mainly use it as a jumping off point to learn unity game dev. As for doing this in neo's, while I don't know much about neo's other than a recent (rather positive) video by thrillseeker on it, they seem to have object instantiating sorted out. Where as vrchat doesn't like it when you literally spawn an item in, meaning you have to make all the objects beforehand if you want their positions to be networked. If I could instantiate them, I would assume there really wouldn't much of a difference, given they both run on unity and you would still have to check what cards have spawned, as to not create doubles
Create a Lock and Key to Open a Door - Udon / VRChat SDK3.0
23:09
PlayerBush001
Рет қаралды 4,5 М.
I Made A Difficult Game About Climbing
15:04
Pontypants
Рет қаралды 2,3 МЛН
Wednesday VS Enid: Who is The Best Mommy? #shorts
0:14
Troom Oki Toki
Рет қаралды 50 МЛН
УЛИЧНЫЕ МУЗЫКАНТЫ В СОЧИ 🤘🏻
0:33
РОК ЗАВОД
Рет қаралды 7 МЛН
Scammers PANIC After I Hack Their Live CCTV Cameras!
23:20
NanoBaiter
Рет қаралды 27 МЛН
How I Built A LEGO Treadmill That Moves In EVERY Direction
18:06
Banana Gear Studios
Рет қаралды 1,1 МЛН
Rec Room: The Best Way to Kill a Game
1:33:12
TheLuchenator
Рет қаралды 218 М.
Create an Admin / VIP Only Room - Udon / VRChat SDK3.0
6:35
PlayerBush001
Рет қаралды 14 М.
Create an Automatic Door - Udon / VRChat SDK3.0
17:00
PlayerBush001
Рет қаралды 8 М.
How do non-euclidean games work? | Bitwise
14:19
DigiDigger
Рет қаралды 2,5 МЛН
Can I 100% Superliminal and Get a Refund?
23:36
Gronf
Рет қаралды 387 М.
10 Minutes vs. 10 Years of Animation
19:29
Isto Inc.
Рет қаралды 1,5 МЛН
Making a Game About Weak Points
21:27
Emis
Рет қаралды 1 МЛН
Wednesday VS Enid: Who is The Best Mommy? #shorts
0:14
Troom Oki Toki
Рет қаралды 50 МЛН