#udon-general
59 messages · Page 65 of 1
No I mean get rid of the entire thing
Start on a brand new line and let it guide you
with override the error message does change though
okay
seems like it just wanted them public and VS is happy now, but unfortunately, I've still got the red errors. The yellow ones saying to override (my bad) have gone now
well... the script doesn't work... any ideas?
wait. nevermind. i deleted it from the scene while trouble shooting...
Thanks for the help!
Use utilities.isvalid when checking playerapis
how would i type the if statement? i didn't know how to write it
If (utilities.isvalid(players in world[i]))
And also there's no need to recreate the array every time. That's going to generate a bit of extra garbage. Just generate it once on start and then keep running getplayers on it
And if you always use utilities.isvalid to check playerapis, there's no need to do anything when onplayerleft happens. Their playerapi becomes invalid and you can safely detect that
would utilites.isvalid detect if the player isn't there anymore, or would i need to do a second playerapi.isvalid to check that?
use utilities.isvalid
playerapi.isvalid is a bit niche because it specifically only handles the situation where a playerapi was valid but has now left
if it's a completely null playerapi like in an array that was just generated, playerapi.isvalid will crash the script. If it's a player that has left, it will return false
utilities.isvalid is just a good catch-all that will take care of playerapis no matter what
if i was to do a count of all current players in an array, would i do a
if (utilites.isvalid = true)
if (playerapi.isvalid = true)
then +1
to catch any old player api's that arent being used anymore?
without crashing the script
Everyone's graphs are always neatly organized and everything and mine's all
what's the secret?
Not much really, just try and avoid lines going though other nodes and your basically there. might want to add a private player variable to store that collision into. then you can pop it elseware and avoid really long lines. Of course, this is only aesthetic, and only sometimes makes it easier to read
or this...
ok that makes sense
i'm used to optimizing code and using minimal variables it does not translate well to graphs
well... other than the plyr var, the other changes like making another 'this' node or the bottom section moved up so the 'ordering' lines don't cut across will still help it look tidier with no performance hit. Also, given your using graphs, you will likely have massive lag problems in the graph editor before you will struggle with the performance hit of one or two extra variables in game. With all that being said, the time you take to make it look nice is time you could be spending making the next thing, so unless your trying to show others (aka, make it more readable when asking for help) i would only do a bare minimum (unless I'm procrastinating...)
Also 'This' is always default. so you may end up leaving it out for less nodes and whatnot
Don't suppose anyone can tell me if there's a GameObject > Material > Set Material ? -- I've been looking and I can't seem to find such a thing.
material is a property of a mesh renderer, so you would have to do getcomponent meshrenderer first
if you're not seeing anything in the search, you may have a node selected so it's giving you a subset of search results that are only relevant to that node
ah, nope, all good. I see it in there.
on an unrelated note, I'm not sure if you recall, but a while back I had an "everyone gets teleported" issue and you jumped into the world to check it out -- it ended up being a fluke, and I'm sure I thanked you in the moment, but I still really appreciate that.
Yes, I remember. You're welcome!
Does anyone know how to use Udon to change the intensity of an emission within a material?
I only know the animation way but that doesn't seem right
funny you should ask...
if there is a way, I think I might benefit from it at well. I'm currently trying to accomplish something like an emissions adjustment by just doing a full material swap.
silly thing keeps giving me a console error though
Yeah I've got something similar in U# though. It doesn't like it because "shader" isn't such thing in UnityEngine.UI
Is there a way to get a integer from complicated string like q1w2e3r4->1234 ?
with udon node?
I would do that by running string tochar[] and then doing a for loop to go through that array, convert each character to int, and check if that int is greather than 47 and less than 58. That's the range of 0-9 in ASCII. If so, add that character to a string. Then when you're done, run int tryparse
I hoped for some easy solutions.. but yeah I thinks thats the best tkx
@autumn oriole
private const string A = "s4tr12b3";
private string _b = string.Empty;
private int _val;
private void Start()
{
foreach (var c in A)
{
if (char.IsDigit(c))
_b += c;
}
if (_b.Length > 0)
_val = int.Parse(_b);
Debug.Log(_val);
}
udon sharp?
ye, you can change loop to i < A.Length loop and take char as A[i] in graph if there's no foreach (not sure), good luck
I’ll tru thx I only used udon nods.
I think you need this
renderer.material.SetFloat("_Emission", someValue);
material may be different. There's sharedMaterial materialBlock and array variants depend on how you want your renderer to batch. I can't cover them all yet
Appreciate it thank you. I can't find the UnityEngine public variable for materials.
It seems like since there are so many types of shaders and custom params they have, it is not easy
You have to access materials within Renderer component.
And then you can change shader properties with SetFloat or SetInt, or other by the material
Hey so did they change something in an upadte cuz i cant put just a name in the event name thing anymore ?
That's correct. It will now automatically find events if you give it an udonbehaviour
Oh huh thats neat
was just confused cuz i was trying to do it the way that i know how to do it xD
there are still situations like if you're using getcomponent where you may need a raw input, so you can still drop in a string const node
wait did i understand it wrong ?
the event needs to do things
ahhh
technically it is reading the compiled code to find what events exist. And if an event does nothing, it never goes into the compiled code
Is there any API reference for VRCObjectPool? There's a bunch of functions with zero question marks or entries on the developer site.
Anything starting with VRC is one of VRChat’s, not Unity’s
This doc covers Networking Components, Properties and Events you can use in your Udon Programs.Special properties you can get from Networking: IsClogged - returns true if there is too much data trying to get out. You can use this to hold off some operations or adjust your logic. IsInstanceOwner - re...
I know, just couldn't find anything when I searched on VRChat's own site. This gives me a little detail but still leaves a lot of unanswered questions:
- Is it only the active component of a GameObject that is synced? Is any other part of it synced like Transform or Array Order or do you have to do that manually?
- In this example ive built for someone else the opposite behaviour happens to the one listed in the site - Return makes the object active and TryToSpawn hides the objects in the pool.
Every child of the object pool is syched
Sorry I should re-word - is only the active/inactive component of every object assigned to the pool synced?
But only one is meant to be active at a time
...you've lost me 😂
They should all be synced regardless of whether or not they are active
They are used in pens for example so late joiners see the trails correctly
I figured that, when I say, "active" I was wondering what parts of the objects in the pool are synced, or if every aspect of the objects in a pool is synced?
Okay, thanks for the clarification 👍
Ok I see the misunderstanding in the documentation
The “active” object in the object pool does not mean IsActvie, it’s where the pool’s selector is, it’s the next object to be spawned (made active) by the pool
Yeah maybe there’s a better write up somewhere
Yeah, I guess ill have to do my own experiments and see what happens
It basically gives you a pool of objects you can use like a linked list and get the reference to the next one
Im aware of the basics and the "concept" of it. Particularly with networking though the devil is in the details and those details are nowhere to be seen 🙃
Anyone got an idea as to why this would constantly loop on itself after the second use?
and then entirely softlock when you drop it?
Discords upload function works promise
Nevermind, i have found the reason, i think.
I was correctly incorrect.
It does all the functions, but only one time around it seems. Any ideas as to why it softlocks?
Anyone knows a way to play a video directly from file ?
Im not sure if thats even possible. I think technically it is possible, but only with some hackery.
Usually you would have a public UnityEngine.VideoClip variable and assign it with your video clip in the editor. Then use that variable for the video player to load.
However the VRChat provided Video Player API does not account for local VideoClips. The only way to do it, would be to get a reference to the VideoPlayer component, after it is created by the underlying VRC VideoPlayer stuff and then call the load function directly on it.
oh i mean just 1 video which is dirrecly on the unity project
Yeah. Thats what Im talking about.
ah
Ohh actually as a matter of fact, I dont think you can call any of the native VideoPlayer methods, so yeah. You cant. I think.
so you can play a vid from url but not from file , huge stonks
does it work if i just publish my vid in private and get the url ?
It needs to be publicly available :P If you intend to upload it to youtube, then unlisted would work I think.
Yes, because VRChat didnt account for local files in their VideoPlayer API. Make a canny for it, if you like.
i think i gonna do the regular way since I'm a huge beginner
Reading over the GetPlayerById document. I assume this is used to identify a specific user? Does this look for a specific username?
In other words, is my “ID” my username?
No. It’s an integer
How would one go about looking for a specific user?
Use GetPlayers to get all players in the instance, and check them one by one
What would I be checking for?
Okay cool
Is there any difference between display name and user name? Doesn’t it always display out username?
They can be different. Username is made when you create the account and can’t be changed
Ah okay
VRChat doesnt really want you to identify a specific user. The only reason why you would even want to do that in the first place afaik is only for administration purposes. Which is a bit of a grey area
Yes, that
Well as I said, thats a bit of a grey area
I know my buddy already does this in a world we share. Each user has their own spawn point in our own rooms of the world
They acknowledge that its important for event organizers and staff crew or whatever to have special administrative powers and abilities, but on the other hand it can quickly lead to unjustified and unproportional in-world moderation and bad power dynamics.
As long as you dont do anything malicious or harmful youre fine I guess. Just be aware that its gonna be a little janky as it is technically not officially supported.
Well it will allow for janitorial and staff roles. Which will be handled differently when monetization becomes a thing
But yeah I get you
My world is a theme park so there may be options for staff to help guests and stuff which could have specific tags
Just wanted to learn about how users are found in udon
An alternative is using a password/passkey using a keypad
Yeah we did that before in The Great Pug (I’m Owl Boys bartender and have a password access there) but I wanted a more elegant solution
By just checking username
I would argue that it is the more elegant solution
as it is robust and requires no maintenance, unless the password is leaked.
There were issues at the time with passwords a while back in sdk2
Not sure how different it would be now
Brute force was easy back then
But yeah leaking password is a big potential problem. If one excited user earns the password from me then abused it, I now have to go in and change the password and tell all the others the new password all for one person
Also uses I imagine for this is select usernames having access to “show” areas to have live performers on a zone that can only be entered by them to perform in.
Well yeah youre right keypads are pretty unelegant. Got me convinced. But yeah VRChat really kinda doesnt want us to identify specific users.
The idea is that worlds should be fully explorable by everyone. In an instance you can have people that have special abilities, like the master being able to start a game. But if someone makes their own private instance of a world, then they should be in full control. (My interpretation)
Obviously that doesnt quite work with public instances however.
Yeah, I’m just thinking ahead for potentially paid users having special tags with access to things they paid for in a subscription. Things of that nature.
The "best" most appropiate way is to let the master or better instance owner have full administration powers, and let them be able to select a certain user by id and give them permissions.
That way you can host an event, where you are the InstanceOwner and then you have the ability to decide who does and who doesnt get which permissions.
An automated system where the "administrator" doesnt have to be present is not really supported by VRChat.
I think using the avatar image reader with password hash is the best option
That is also very much not supported and could break any day :P
That’s fine. I don’t have a direct use for it yet, just reading and trying to learn about the features
once we have a subscription system in VRChat, we'll make this available through new Udon functions
User-to-User subscriptions
They announced something like that in the last dev stream. You might want to rewatch it, had a lot of cool stuff in it.
Is there a way to know whether or not the video players are currently globally rate limited? Only way I know would be to actually call LoadURL and check in OnVideoError, but I just want to know if Im able to even load the url in the first place and not actually do it, if I cant. Calling it over and over again in OnVideoError seems excessive and prone to fail.
What would cause a OnPlayerTriggerEnter to execute when I first join a world, even though it's collider isn't anywhere near spawn?
Is that trigger collider covering the area around 0,0,0 in the world?
it's at 0 0 0 in it's own coordinate space, but not the worlds
Any ways to get a player's ping using Udon?
you could calculate ping between players using NetworkServerTime
Am I correct in thinking that I am not able to use ScriptableObjects and if so what would be the best way to handle the data for something like a custom deck of cards? Just an array of game objects?
i dont know what ScriptableObjects are, but incase of a deck of cards i assume you use a VRCObject pool to put the cards in while they are in the stash
I don’t believe VRC really supports ScriptableObjects, no
I never fully figured out how to use them when I set up SO’s the one time I’ve tried many years ago, but I believe your best option is to have a prefab in-scene that you clone from (if the objects you’re creating dont need to be synced between players at all), or yeah just make a pool of all your cards
I see how this needs more than a pool
You need a set of objects with pre-determined values so you can copy those values over if a card you’re drawing is that “card ID” or whatever youll use
The way I do this breaks VRC’s network sync because we use custom sync code 😓
@grave cipher yeah I think your best bet is just making an array of all your possible cards and each GameObject has all the values for their script, then when spawning a card you use a “card ID” that’s just the index of your array of possible card GameObjects and it copies all its values
Could easily then make a “deck” that’s just an int array of various card IDs, and shuffling that would just be reordering the array
You can't use ScriptableObjects at runtime, but you can write Editor scripts to use them at edit time to build out arrays, etc.
Hey just to confirm for myself
Is this checking if 1 is greater than INT or INT is greater than 1?
if 1 is greater than int
Got it, thanks
how many hours you have to be on vr chat to get the user role so you would be able to download some avators which you made
There's no released data on the number of hours, but I think for "User" (the green one), ive heard estimates of around 100 hours. Or you can buy VRChat Plus for a month to boost your rank
Why wouldnt you be able to download avatars youve uploaded though?
I thought it was like 24 hours
I may be getting some wires crossed, but if I remember correctly I had 50 hours logged and still wasnt a User, then I bought VRChat Plus for a month and got it.
of I got a friend giving me avators which they have to download for me
im still a new user I play on vr and on steam
So you want the User rank to upload? That makes more sense. You should ask in a different chat mind you as this is for Udon scripting questions.
#user-support-old seems like the most open-ended place. I'll respond more there.
Can someone explain to me what the variable type (T) is? I havent really found a good explanation for it but ive seen it as a dropdown in GetComponent and it'd help to understand what differs between this type output and the standard Component type you get if you choose (Type).
Anyone know of a prefab that makes a game object travel along the floor to reach a player?
Thats pretty specific. Could probably modify Vowgans Roomba Prefab.
I just basically want to make an NPC that when you wake it up, it chases the player
with the new 'VRC Object Sync' script on an object w/ 'VRC Pickup' do I still need to include the 'Udon Behaviour' script to define the sync method, or is that also handled by objectsync?
no, you do not
What? Thats worded a bit too generic to be answerable.
You can use SendCustomEventDelayed to send a custom event after the specified amount of time. Not sure how well that answers that
that works great
thanks
I mean, I can make that work. But what I was really looking for is for example. I want to set a trigger, wait then set a bool
So for SendCustomEventDelayedSeconds I have to fire off a new event - this is fine if this is the only way
but was hoping there'd be just alike a pause or wait
Udon runs on the main thread...pausing the main thread would be...bad.
So you kinda have to work around it.
kk
Is there an empty node that can be used to reroute the execution path in a graph?
just for aesthetics? No, though you can SendCustomEvent to the same graph to jump around
When is 2019 lts actually releasing
Soon tm
Soon™️
ye that one
That'll certainly help in most cases, though reroute nodes are a pretty common and functional element for keeping node graphs readable. The only node graph-based app ive used that hasnt had it is a beta app and I was still able to make my own substitute 🤔
this graph couldn't teleport the owner to the destination properly, what is the problem?
you cannot teleport other players. You need to send a network event to the owner and then the owner has to teleport themselves
Any "Quest" supported players out there?
The problem is that Quest cant run the third-party software that is required to dynamically resolve non-direct media links, like Youtube.
There is services that attempt to work around this, but its quite janky.
yeah know about the quest part. but ive seen a pretty amount of players wich seems to work pretty well
Sorry guys, stupid question I'm sure. I'm having some discrepancies between in editor script testing and in game. The summary is, I'm instantiating from a prefab (using VRCInstantiate) and storing it in an array at run time. When I access the index in editor play-mode, it works fine. When I try to access it in game it errors with a null reference. Is there an obvious thing I'm missing from this scenario? The only thing I could thing of is that there's no networking happening, but should that really be an issue?
Do you happen to be using U# for this?
Yes sir
So you're instantiating a prefab locally and assigning it to an index in the array only to then later retrieve it and have it yield null?
This appears to be the case yeah. Ive got no proof that it actually instantiates properly in game, but is fully functional when tested in editor
Sorry i just looked over it and it's not as straight forward as I'm making out. The issue seems to be coming from attempting to call GetProgramVariable on the udon behaviour component of said object. I'll run some more tests.
👍
Is there any debug option that can track where is the RequestSerilization function being called? i have a Manual update behavior that just constantly being called and updated. And I'm 100% sure i didn't put requestSerilization into update or something.
🤔
Not entirely sure what happened, but now it seems to be working in game 🤷♂️
Thanks for the help 👍
Is there a way to ensure a value is properly synced on start before applying it?
No, wait for the first OnDeserialization
Okay. All I'm looking to do is apply synced values on the joining player. Just do it via OnDeserialization even though I only really need it to fire once?
Question: is the "Set UseText" Function broken in 2019 version?
If not, what am i doing wrong here?
The custom events are infact going through, or else the rest of the script wouldnt work.
What is actually the purpose of setting a variable to, "Synced" if you have to use network events to manually handle the setting and getting of variables?
network events are not required for setting synced variables
So when you set a variable as "Synced", you're asking VRChat to handle the syncing of the variable in all cases?
VRChat syncing is not based on a central server, it is based on ownership. So each player individually is the owner of various objects. If you want to set a synced variable, you would take ownership and then set it. Then the other players would receive that
So with Synced Variables you need to be sure that the owner of the Networked Object is the one performing Set Variable event?
correct
Great, thanks for the clarification ^-^
I actually have one more question - what is the 'sendChange' checkmark next to Variables then? Im seeing it on variables regardless or whether they are marked as Synced or not.
that does not refer to sending the change over the network, it refers to whether or not it will cause an OnVariableChanged event
if you hold alt while dragging a variable into the graph, you can add such an event
Aaaah, got it. Thanks again 👍
I unfortunately have another question as it doesn't appear anywhere in the docs or Discord - whats the none/linear/smooth dropdown that a Synced Variable has?
that refers to how the variable will be interpolated when it is received. None will just be set to the value immediately. Linear will slowly change into the received value. Smooth has an ease-in-out function
That only effects data types that can be interpolated however
...and what types of data can be interpolated? :D
mostly floats, vectors, integers, stuff like that
Got it, thanks again. Here's hoping the docs are a little more specific going forward 😂
About that...
They have recently made improvements to documentation coverage. However large parts of their internal workings still remain quite intransparent.
sssshhhhhh
Im actually writing my own documentation as I learn Udon so I can post it somewhere when im done
Also their API design can often be misleading. My favorite example here is how VRCPlayerApi.TeleportTo takes a PlayerAPI as an argument, which would make you think that you can give it a player api, and it teleports the corresponding player. However TeleportTo can only be executed on the local client, so the argument is completely unnessecary, because you can only give it the local player for it to function.
bangs head on desk
The moment i saw the fact that the API has Instantiate and a networked Destroy but you're apparently supposed to use neither and instead use VRC Object Pools, I got bad vibes.
instantiate is totally usable, just not for synced objects
Granted, that one (referring to TeleportTo) is a bit of a special case, but there is other places where the naming and the way arguments are presented can mislead you how to actually use the node/method, which are often not documented or are missing crucial information to fully understand what a method does.
Im aware of that, but theres a Networked Destroy node available and yet you're apparently not supposed to use it e _ e
that's legacy, will be deprecated
I guessed as much, it just feels misleading to have it when you're first figuring stuff out and there's no indication that it is bad. Would help if there were tooltips or something so you could say, "Hey, this is deprecated, use X instead".
my game keeps timing out and i cant seem to be in a world for more than a minute tried steam client, oculus client and vr and non vr version. could this be my internet?
probly yes, if you tried all these different clients its unlikely vrchat
sounds like a package loss thing, then you can connect normally but if you randomly drop packages you get disconneted
what could help me then?
this channel is for help with Udon, you can visit #faq to learn where to ask other questions
udon is the scripting engine used by vrchat worlds
I have a script that is supposed to play a sound effect on particle collision. I think I have something wrong in the actual playback part, because when I use CyanEmu to force the collision event, nothing happens. Here is my script and setup:
how do i fix this error and fix where i can use the show panel control because theres only one choice which is utilities
The error is quite simple, the file mentioned udongroup.cs is not in a correct format
Since it is an udon SDK file, I recommend re-importing the latest sdk
Don't try to ping 40k people for your problem even if it worked there's no reason to notify that many people of your question
Make sure you are using the right version of unity
https://docs.vrchat.com/docs/current-unity-version
This page lists the current Unity version you should use when creating content for VRChat, as well as links to the correct version for both Unity Hub and direct downloads. Current Unity Version The current Unity version in use by VRChat is Unity 2018.4.20f1. Ensure you are using this precise versio...
Hm, are you using the 2018 SDK in a 2019 project? That's where I've seen that issue before.
Anyone who got any ideas about Mp4 files for the players?
You can use direct links to remote MP4 files, we don't currently support embedding videos in your world directly.
Thanks for the respond 😄 well okay not much to do there then 😄 . hope that you will in the future 😄
is udon just, like a physcics engine?
No. Udon is a scripting environment. A physics engine calculates and resolves physics between objects.
ah ok
?whatisudon
VRChat Udon is a programming language built by the VRChat Development Team for use in VRChat worlds! It enables complex behaviors and logic in VRChat worlds. Read more about Udon in our documentation: https://docs.vrchat.com/docs/what-is-udon
What’s this Udon thing anyways? VRChat Udon is a programming language built completely in-house by the VRChat Development Team. It is designed to be secure, performant, and easy to use via the VRChat Udon Node Graph, a built-in visual programming interface that uses nodes and wires (we call them “no...
I still dont like the wording "programming language" because its more than just that. I would call it scripting environment, but I guess more people know what "programming language" means and correctness doesnt really matter there.
i tried both its the same error every time
i tired doing like 5 times
Wrong unity version? Which SDK version you're using?
Sdk 3 but i have never changed unity at before this project has been working just fine I just open yesterday and this happened
What is full version number for both unity and sdk?
How sensitive is udon in reading humanoid bone rotation or position data? Can it measure 0.02 degrees consistently between frames?
probably, yes. The only limitation would be floating point accuracy, and that would start showing up somewhere around 5 digits
Thanks, I wanted to monitor for rotation over time, I hate to watch in an update loop but I guess that’s where this would go
How well do multiple VRCPickups work on an item? I'm doing two handed firearms.
I phrased that wrong.
I have it parented so it stays with it. You pick it up, it goes parent = null. drop it, it parents back.
you don't need to change the parent
I have an aim constraint aiming the pickup at the secondary pickup.
I've saw that if I don't do that, the item tends to freak out.
I would recommend using udon to make the primary pickup look at the secondary instead of constraints. Then you can better control when it happens
Yeah, that was going to the next question. Constraint does weird stuff with children.
It visually looks fine, but mechanically, the muzzle transform is still pointed in the original direction.
thanks
WTF does that mean ?
2018.4.20 and the other one was 2019.4.28
sorry for taking long i got busy and had to setup some stuff
What did you mean another one? You should use unity 2018
i meant version
Hi does anyone know where I could get the sdk for unity 2019?
the error about StyleEnums is caused by using the 2018 SDK in Unity 2019
Thanks
how do i fix it
use the 2018 SDK if you're working in Unity 2018, or use the 2019 SDK if you're working in Unity 2019
let me get something to show you
heres a video
Could you sum up what's going on in this 6+ minute video?
its me importanting the sdk and showing whats it does which this 2018.4.20
hope that make senses
Which SDK version are you using?
3
Which one, exactly? What is the filename of the unitypackage that you're importing?
VRCSDK3-WORLD-2021.07.08.15.57_Public
Ok, I recommend you try a clean install of the latest SDK. Download it from the VRChat website, close your project, delete the Udon, VRCSDK and VRChat Examples folders as well as the Library folder. Then open the project back up and import the latest Public SDK.
Oh and backup your project first, of course.
Step1 is always backup.
dunno if this is an udon question, but is there a way to add a link that people can click to open up a webpage or whatnot? I've got a discord link that would be awesome if people could click on it instead of having to manually typing it out
Thats currently not possible.
I thought for sure I saw it on a booth map at one point...
There is no supported way to do that. Period.
okay. Welp, thank for the help. Saves me looking around to no avail
VKet can do it because they have a business agreement with vrchat. It is not available for the public in normal worlds
yea, make sense. Would likely be pretty bad with what you could link people to
Hello, quick question with Udon, is it possible to create 2 areas (A and B) next to each other and players in area A can't hear players in area B and vice versa ? I tried some stuff but the best I was able to do is just to lowered the voice of players. (feel free to ping me to answer)
yes, definitely
i cant remember if audio settings are done locally or gloabally, but you could always try reducing the audio distance
they're done locally, so you can change how each player hears every other player independently
just setting voice far distance to 0 will basically mute
Oh thanks, I will try to do something with this component
it made it worse should i just transfer everything to a new unity project and use the the pipeline
As far as i'm aware this is what happens when your internet connection is unable to stay connected with the VRChat servers. You should ask for assistance in #user-support-old though, this channel is for questions about Udon scripting.
ok thank you very much
How is it worse? Not sure what you mean by pipeline.
I'd like to pick someone's brain for this task I have. So in my world, in SDK2, I have a bunch of ground triggers around the world and depending on where you're standing, the one audio source jumps to the "speaker" near you. I'm sure this is doable in Udon with checking player position. Is this so? any rough idea what kind of nodes I'd be looking for?
So I'd like to set spread out speaker locations, and depending on player location, whichever it's cloeset to will get the audio source moved to tha tone
you could do it in the same way by just doing onplayertriggerenter > set audio source location
I'd like to avoid having a bunch of triggers all over the place. It gets messy and interferes with other triggers
you could make it fancy and have a single script with an array of locations that would periodically check which one is closest to the player and move to that
yeah, that's what I'd like, an array of locations and have it check player to see which its closest to, but without having to set triggers
it's pretty straightforward. Just have an array of transforms and do a for loop. Do vector3.distance between each transform and the local player's position and find the lowest one
okay cool, i'll make note of that. Thanks
I don't know how to do any of that yet, but that gives me some homework 🙂
just keep a float representing the minimum distance and an integer representing the position in the index where you found it
before starting the for loop, set the minimum distance to mathf.max
if a distance you find is lower than the minimum, set the minimum to that and set the integer to the current for loop iteration
Thanks
you do know your linking you use a client that is against TOS
either way this is for help with udon world creation not with helping people who have issues with thier clients
Nevermind the Trojan issue guys - clearly enforcing the ToS of VR Chat was the priority here.
👍
Yes. Better not to talk about a thing that's against ToS in the official vrchat discord server👍
If I wanted to pick up an object and drop it off at a specific transformation position, is there any elegant reccomendations as to how go about this?
I was thinking about using vrc pickup but I was wondering if there is some sort of on release method I can access
Ideally it would be on release
If pointing at a drop off position, drop else go back to OG position
Yes, if you add a vrcpickup and an udonbehaviour, you will be able to use the ondrop event in the udonbehaviour
So if I use an Ondrop event In the Udon graph would it automatically know to reference the vrc pickup script on the same object?
It happens on the same gameobject so you would naturally know where it's happening
so in theory this ondrop will fire off as is now?
Yes, exactly
its so weird not seeing a reference to the object in the udon graph. Sorry total udon noob
If you need a reference to the transform, you can just leave any transform slot blank. If you need a reference to the vrcpickup, you could have a public variable that you drop in manually or a private variable that you find on start with getcomponent
okay that makes sense
so one more question if you dont mind.
Lets say im holding said object and I want to place it somewhere specific, should I check for a specific collider or is it possible to get a reference to the object im pointing to in an easy udon way or would I have to setup the entire raycast functionality?
At that point id rather access the collider
if I had to build the raycast system
Like a slot for a key?
You can use ontriggerenter. That tells you what collider it entered into. Just check if that collider is valid with utilities.isvalid and then you can check the name. If the name is what you expect, that's the correct object. You could then set a bool variable that represents it is inside a valid slot. You would also use ontriggerexit to turn off that bool. Then ondrop, if that bool is true you can make it go to a specific location or you can reuse the collider's exact position
yeah I basically want to take a GameObject(pitcture) from one board/wall to another and drop it. Its a silly mini game but good to get my feet wet with.
I have created a graph so far. Ideally I Think I would prefer if I can somehow point to the object instead of placing. (have to test the feels first)
I started messing around with the graph. and got something similar to what you suggested. I appreciate the help, but damn this a bit tricky my first go. I think I may have to break it up into a few graphs
I need to see if the collider of the game object I picked up is hitting the target collider first
Then on drop compare a string name perhaps, if the bool checks. apply new target transform
can I access the ontriggerenter in an udon graph of a different object or is triggerenter always on self?
It's always on itself
I don't see any reason to split this into multiple graphs, you'd just overcomplicate it
Alternatively, instead of doing ontriggerenter and exit, you could do overlapsphere or overlapbox in ondrop. This will give you an array of all colliders in the area, at which point you could do a for loop to see if any of them match the conditions.
It would be more complicated but it would be more efficient and it would be contained in a single event, no need for multiple different events doing things separately
oh wow ive never heard of overlap sphere but I like how it sounds. Thats a great idea if I can get it to work!
It wouldnt matter what colliders are around as long as I can comepare the string name. Is it possible to compare a tag? I see no indication of it on the node graph
Tags are not usable in VRChat
Because of how Unity handles Tags
Thank you @fiery yoke that is good to know now otherwise I would have kept searching like a genius 😛
So, i didnt get a response last time, but any reason as to why this wouldnt be working?
As a heads up, im on unity 2019.
That text is so hard to read...how do you even manage to do anything xD
adapted.
I tried turning neon off but it didnt change the look
Its been off for about a week.
God have mercy on my existance.
anyway, back on point, im not sure as to why this isnt changing the use text when the events are fired.
The events are infact firing, but the text isnt changing.
Understandable, day lol.
Any ideas on how to connect these set of two nodes?
Not sure what to do here to check if the condition is true
that's not really how things connect. The biggest thing you need to know is that you need to use the white lines/arrows to determine "flow" which is the order in which events happen
so right now this would do absolutely nothing because you're not using the flow from ontriggerenter
what you do have is the equals node, and that outputs a bool which is true or false. So what you need to do is add a "branch" node. This takes in a bool and allows you to split the flow into two different directions
yeah I knew they wouldnt connect Im just not sure what to use. I know I am close long story short if the bool is true I want to reposition the gameobject.
A branch is a great start
Also thank you for your patience in advanced
everytime I drag out a while line nothing shows up, is there a system in place of what these are?
are all white lines events?
drag it into the white arrow of another node like branch or setpositionandrotation
generally, nodes that do something have flow, and nodes that get something do not
if it does not have flow, it's not meant to. It's meant to work backwards in order to provide some information to something that does have flow
Im pretty sure you dont even need that Get Transform
yeah, all transforms, udonbehaviours, and gameobjects can be left blank if you just want to reference itself
so this means if I leave on drop as is, nothing will fire off unless the drop happens?
oh got it nevermind
i see what your saying
you can't really combine those two events together like that. What you probably want to do is set a bool to true from ontriggerenter and then use that bool in ondrop
this.gameObject = blank reference
not quite. That's probably going to break. The branch is using variables that only exist in ontriggerenter, so when ondrop tries to access those variables it won't be able to
okay I see an issue. Perhaps on trigger stay would be better
nah thats crazy expensive if it keeps firing after I drop it
I prob just need to set a bool to true on the on trigger enter and do the rest at the drop
I see, thanks again
I’ve had to implement some patterns like this recently, what I did was have a private variable Collider currentTriggerZone and set or null it on trigger enter and exit, respectively. Then, separately, the onDrop flow reads that variable to determine what to do.
that would be unreliable if you have multiple overlapping zones. It could enter the one you want but then touch something else unrelated before it exits
I was about to do something similar to what @soft mountain suggested.
I tried doing the sphereoverlap but trying to get that going was definitely tricky. I am still in a much better understanding now then when I started today.
Yeah, the multiple zones thing is a caveat. Is there a best practice design that accounts for that case? God what I’d give for hashmaps or sets in Udon, those would make it trivial
@soft mountain this was an excellent suggestion by phase but tricky as hell to implement especially me being an udon noob
"you could do overlapsphere or overlapbox in ondrop. This will give you an array of all colliders in the area, at which point you could do a for loop to see if any of them match the conditions."
Today was the day I learned those functions existed 😂 that’s gonna simplify so much!
@soft mountain please share if you figure out how to implement. i never knew Unity had them in their API either. I knew about spherecasting but not overlap
Do you have other coding experience or are udon noodles your first exposure to it? I usually just use Udon Sharp, but next time I’m working on it I can put it into a graph to demonstrate if you want
Yeah I usually just use MonoBehaviours this is my first time doing udon anything
or vr chat for that matter but ive been using Unity for about 6 years now
Oh if you prefer that then DEFINITELY check out UdonSharp: https://github.com/MerlinVR/UdonSharp
Yeah Ihave that installed, guess I was being stubborn, worth a shot. Figured the community knows more about noodles so it may have been easier to learn and ask with that
It’s been getting updated to feature parity within a few days of every VRC api release for as long as I’ve been paying attention
Yeah ill try that next, might definitely be easier
the neon style is fixed in the next SDK, but you just need to close the graph window and reopen it to make the change stick.
I kept looking in colliders instead I should be looking in physics duhhhh my bad. Physics.Spherecast!
Odd. That fixed it but its odd because it hasnt reset even after restarting the project.
Unity might be loading cached preferences or something until you reload the window specifically
That could be a good reason.
Anyone knows why the video isn't playing ?
It's a simple screen with just 1 video to play on launch
You just want the video to replay when its finished?
nop
Ohh I see what youre doing.
Or at least I think.
Youtube videos cant play in the editor, because it requires a third-party program to run, which only runs in the VRChat client by default.
welp that's problematic
Also video players have an event called "OnVideoEnded" by default
There is no simple way to play videos with links that dont directly point to a media file in the editor no
wait wait, to be clear you realize that helper is talking about in editor
it should play just fine if you just play it in vrchat
oh
wait i don't understand what's the problem then ?
cuz the video don't play in game neither
ok then that's a different issue
can you try the video player in the example scene?
damn there's a lot of nodes
yeah, video players are complicated
it's a bit less complicated if you don't need to sync the URL
yeah i rlly don't need that at all
How accurate is the IsUserInVR check?
Can I just slap that in the start event, or should I wait for later to do it?
ok so i'm trying to make an object rotate constantly on the Y axis, watched the spinning cube example, watched tutorials and stuff, but i can't seem to get it working
how would you go on scripting that properly (using the graph)?
apply rotation amounts during Update
none of those tutorials worked for me, so this is very nice
share it here anyway so we can see! I just happened to have this one around, it's one of the first things I ever made
Both are public.
You set the speed in rotationAmount.
Of course, if you want it synced, you should have an IsOwner check before the rotation and an object sync on the object.
What is udon?
?whatisudon
VRChat Udon is a programming language built by the VRChat Development Team for use in VRChat worlds! It enables complex behaviors and logic in VRChat worlds. Read more about Udon in our documentation: https://docs.vrchat.com/docs/what-is-udon
What’s this Udon thing anyways? VRChat Udon is a programming language built completely in-house by the VRChat Development Team. It is designed to be secure, performant, and easy to use via the VRChat Udon Node Graph, a built-in visual programming interface that uses nodes and wires (we call them “no...
Nice! Almost exactly the same program - only I hadn't made the target transform into a public variable like you have here, instead the program is meant to be dropped directly on the target.
Hello everyone
Can controllers break
If you try hard enough
Ok
Is "Disable Station Exit" Still not togglable? I remember I couldn't get that to toggle through animation in SDK2 and just tried again in animation and also through Udon and I can't seem to get it to toggle.
I did a simple test, it's either not working or I'm doing it wrong.
the checkbox is turned off by default. This should make it so that when I sit, It checks that and I can't get off the seat - not doing that
Help please when I have question I try to play audio in custom world by using unity audio source play or just toggle play on awake and activate gameobject but it always crash vrchat
Could you show the audio file in Inspector panel?
Is there a way to change the animation state inside the runtime animator conroller with udon behaivour?
Yes, by setting animator parameters. Then the animator uses those parameters as conditions in a transition to another state
In one of my worlds what people reset their avatars it makes the appear far above the ground and then drop. They spawn in ok, just when they reset. Does anyone know what causes this?
i think this is more a issue on thier side with playspace mover
Has anyone else been having big problems with video players in worlds on up-to-date SDKs? I've tried both Wolfe's and Merlin's player and even the most simple setup has unbearable hitching, crashing, weird sync issues. It's to the point were throwing events with DJ's playing on screen is impossible for us right now.
short question:
is there a way to get the initial height of a players avatar in sdk3/udon?
i want to set the position of an object passed on the players height, so that tiny avatars can reach it for example as well.
With Beta SDK in open beta or with release SDK on live?
This is latest release SDK
You can try the new video sync player example in the open beta - it's been simplified and streamlined.
The open beta is not network compatible correct? So anyone on the current master build won't see our world, which is a no-go for the events we're running this weekend?
Reimajo has a very nice player calibration script on their Booth (hopefully advertising assets is allowed here)
Correct, the Open Beta is not compatible with the Live server. Out of curiosity, are you using the new automatic resync feature on these video players? If not, how often are they trying to sync?
Ive been working on my own video player, and I also experienced some weird hitching of up to multiple seconds. However only on the owners site.
We have run tests on two different players with the automatic resync both on and off, but most of our tests are run with it on because VRWorldToolkit suggests it to be on
That's good to know. If you're specifically seeing issues when it's turned on, please make a Canny so we can investigate and follow-up.
Will do when I get home from work, thank you.
I've got a, hopefully easy, question...
there's a prefab in my scene with some scripting on it that can be toggled on and off by clicking a cube. It's not super clear how I can trigger the boolean without this existing cube, so I was going to do a quick an dirty fix by simply forwarding an 'interact' from a button to said cube.
Is there such a think in the udon graph as "forward trigger/interact" or "click this target" ?
here's my current graph, but there's nothing on the cube to accept OnPress so far as I know -- so I was hoping for a more general "click" action
what Event does the cube respond to, Interact?
yes, it's got an udon behavior on it that's triggered with a basic interact on a box collider/trigger
you can use SendCustomEvent with the eventName _interact to trigger this. BUT - it of course would be much better to put that script on your button instead.
I completely agree, but I'm not entirely sure how the prefab operates and there's a bit of a deadline so I just wanted to make sure it worked for the time being 🙂
dang... doesn't seem to take
for the sake of sharing details, the prefab I'm trying to remotely enable/disable is Reimajo's player pickup
which works fine in the scene -- I just want to make sure people can disable it at their liesure using a button on a settings panel (rather than a glowing cube floating in the air)
The best way I've currently found to get the avatar height is to get the sum of the distances between the bones from one of the feet up to the head
yea, i was thinking the same an hour ago. this is brilliant. 👍 thanks anyway. 🙂
Is there an event to detect an LOD change on the gameobject? Or do you need to check every frame?
no - you can find a list of Udon Events here: https://docs.vrchat.com/docs/event-nodes
Is there any sort of impact or overhead for having delayed events that run themselves at the end so it’s an infinite loop of checking something every certain number of frames or seconds? Like if I’m doing this with 10+ delayed events nonstop?
Or is that a pretty good replacement for checking something in Update for instance
missing onVariableChanged tho 😄
Well yeah okay true 😛
This is more for like monitoring the player state since we can’t actually interact with any of the player’s objects
For instance checking every 0.1 seconds to see if they’re on ground or not with a raycast, etc.
There doesn't seem to be a downside for delayed events calling themselves It sounds more optimized than checking time in FixedUpdate and calling an event every x seconds
But it isn't garunteed to be regular
Regular as in what?
The length of time between events will be your delay time + execution time
Ohhh that’s okay, I could always go into frames too because it’s not incredibly important, but that’ll be once it’s actually written out.
I’m trying to finally get started on my anticheat, which honestly could probably go on VRCPrefabs after I’m done with it 🤔
And of course you'll want to garuntee that your code always calls itself. or the loop will break.
The idea is to raycast down to your ground layers every X time and if you aren’t on ground, set some bools so the next time it checks it can check your players vertical velocity to verify it’s falling instead of moving up or staying the same height
And that object will just follow the player’s hips probably
Doesn’t the player object have an isGrounded field?
welp you just blew my mind, guess I don't need to raycast lmfao
Is there any car/driveable vehicle prefab i could download?
except in some worlds it happens with everyone and not in others
jetdog has one https://github.com/jetdog8808/Jetdogs-Prefabs-Udon/blob/master/UdonSharp Prefabs/car.prefab
So I've got a teleporter script that just moves the player from one area to another and it's working fine for other doors but with my new door it's like.. slingshotting me passed it and the velocity just picks up infinitely.. anyone know why?
nvm, was a sphere collider for a separate skybox that was the culprit.
So I have 2 objects that are able to picked up and moved around, a chair and a table. When the chair falls off the map, it relocates to it's initial position like players via default. but when the table falls off the world it does not. Is there a way to easily make the table respawn like the chair and players?
Object sync component
Ah, I forgot to add it to the table... Thank You!
Is there a way to sync player tags? I am trying to make something where a player sets their own tag based on some conditions, and than the host processes each players tags, but right now the other players tags just return as null on the host
You could ofcourse always implement your own tags with synchronized strings in an array
I was hoping I didn't need to, since than I would need to make and keep syncing that to another array with player ids as well, but thanks
Indexing the string array with player ids is working out for now, will see if it works with higher player counts later
well yeah an array based on player id's will be fine, but be aware if you world is like max 20 players, a total of 2 * 20 + 3 players can join it so make sure the array is big enough
Player IDs go up infinitely as they are not reused. IDs start at 1 and every time someone joins it adds 1
An array would not be viable if you used player IDs as the index directly
What's the right way to sync toggling gameobjects?
I have some particle effects under a gameobject that's toggled on and off by another object's udon behavior. The particles game objects has an ObjectSync on it, but the enabling/disabling doesnt sync.
I assume disabling it is disabling the sync as well. So I need to find some other way.
Object sync does position, not state
For syncing a simple on/off, it's as easy as making a manual synced behaviour with a synced bool. When you want to toggle it, you take ownership, set the bool, (with sendchange) and then call requestserialization. Then you can use onvariablechanged to apply the state to whatever is being affected, whether that be disabling an object or setting an animator bool
thanks I'll look up how to make a synced behavior.
since your asking for multiple objects, it could also be intresting to look into an VRCObjectPool not sure if its right for your usecase but what the pool does is it basicly synchs the active state, but only if you enable the object 1 by 1 using its spawn method
how can I make it so I can just type in a event name?
oh sorry didnt mean to do that as a reply
Add a new const string node and link to it.
ctor is a constructor method
yeah its what lets me just type in numbers for a Vector3, so assumed it was the same for a string :P
just noob programming confusions
Vector3 is a class type, while string is a primitive type. Every primitive type can be assigned directly to a variable without using constructor.
ok trying one way with these particles. I added a new behavior to the parent gameobject, with a gameobject[] variable, public, and set that to all my particle gameobjects. I then added to my other script, a variable of type UdonBehavior, and set that to my parent of the particles. I then did SendCustomNetworkEvent to tell the particle parent to run whichever event
havent tested in-game, but in-editor with CyanEmu it doesnt seem to be working
Have you assign the object for ParticlesUdon variable in editor?
By the way, I'd prefer using sync variable to toggle state locally instead of sending network event to turn thing on and off.
So should the particles parent have that variable, or have it on the controller?
Can be either way depend on how you do it.
If you have it on the controller then the controller should have an access to the particle component itself.
If it's on particle parent then the controller should be able to set the sync variable on particle parent.
Anyone know how I can create animated text in udon? I'm trying to create onplayerjoin where hud text appears that "playername joined"
Hey, hope this isn’t a dumb question, but do object pools only work on single objects or can they also manage object trees? Like a root object with a few children, with udon behaviors attached
It will work for objects with children but the object pool doesn't do anything other than manage the objects assigned in the object pool script
Quick question. I wanted to set up some dumb script that would only show some debug settings if a player from a given list is in the world. Like, only showing stuff to people if a player by x name is in the lobby, etc.
As far as I can tell this 'is close' to the solution but I can't get it to work. Any tips?
This seems like a very easy problem to solve but Im horrible with udon :,>
you have a for loop inside a for loop inside a for loop. That's probably not what you want
and you're borrowing variables from previous for loops, that's not going to work correctly
Just dragging a noodle from one section of the graph into a totally different section of the graph can cause problems because that variable may be different or not even exist in the other section. What you need to do instead is set a variable (like adding one to the list on the left) and then using it elsewhere
getplayers should be ran just once after onplayerjoined. As it is now, since you're pulling the noodles out into other places, getplayers is running many many times which is completely unnecessary
also you need to do a utilities.isvalid on every player in the playerapi array, otherwise the script will crash
So it’s basically just synchronizing the Enabled state of the objects in the pool, and objects that it gives you keep their VRCObjectSync working?
yeah, it's not making any new objects it just gives you an object that already exists
Okay, so.
-
How would I go about 'running getplayers just once' on join. Do I have to store the player names in some separate string-array? I dont really get what ya mean with that.
-
No clue what you mean with doing utilites.isvalid. Does that mean only store the results from getPlayers IF isValid returns true?
-
I assume what you mean with using a variable, is having a function that sets a bool "isaVIPPlayerinLobby" for use in other functions?
-
hold ctrl while dragging the players node into the graph to create a node which sets players. Plug getplayers into that
-
Utilities.isvalid should run inside the for loop, checking every entry in the array. This is because some entries in the array will not be valid, like your array has 20 spots but if you only have one player in the instance, then 19 of those will not be valid. Trying to pull anything like displayname from an invalid playerapi will cause the script to crash immediately
-
Yes, exactly. Set variables so you can use them later
I aint sure on how to check isvalid for each entry-
That and I'm pretty sure this would set that vipPresent bool for each player in the list, which probably is wrong?
Sry for the spoonfeeding, I guess
at the top, you still need to plug in your existing array into the getplayers. This is because it reuses the same array, it just populates it with players
and the node you're looking for is utilities isvalid. If it has a branch built in that's the right one. Playerapi isvalid is slightly different and not what you want in this case
and yes, this would set it for every player in the list so it would really only work if the last player in the array matched with the last name in the list. One way to fix that is to set the bool to false before going through the list, then if you hit a match, instead of setting the variable directly you could plug the string equals into a branch which then sets the variable to true
also you have a bunch of stuff disconnected, not sure if that was your intention or just work in progress. But pulling a noodle from a completely disconnected section into the main section is not going to work
I THINK this has all the things you just mentioned. The only thing I aint sure about now is how to set up the flow for the two for loops for the names list and items list.
the second for loop isn't going to work. It needs to be connected with flow
you need to have the names loop inside the players for loop so that each player will be checked against every name
but you don't want the items loop inside that, it can happen after you exit the for loop
So for each name, do the entire names loop, and once the player loop exits, go into the item for loop to commit it all?
yeah that's pretty close. Put it on the exit of the first for loop though
do you want it to disable the objects when a vip leaves?
Oh, yeah. I fixed it a second after I took the screenshot.
And I guess I do- couldnt I just plug onPlayerLeft in the same spot as onPlayerJoined?
eh, it's actually not quite that easy because the player is still in the list for a single frame after they leave. You should instead have a custom event and onplayerleft do sendcustomeventdelayed so that it waits a frame before rechecking
On the SendCustomEventDelayedFrames node, should anything be plugged into instance?
nope, that just refers to which udonbehaviour it should happen on. But it will reference itself
I THINK this has everything?
yeah I think that should work
Aaaand it didnt work... ouch
damn
got any characters in your name that aren't letters or numbers?
Nope. Its just "Apois", same capitalisation as in the list on the right
after the isvalid, add a debug log to print the names that it's checking
With the message being the output of players[].get ?
- How would I read that log?
2....adding that magically fixed it. And after I removed the log node, it just works now.
Im so confused, lel
it may have just not compiled last time
but you can find your logs in appdata/locallow/vrchat
if you want to add someone to the list but they have weird characters that don't work, you could check the log to get their exact name exactly how it should be
Noted-
But yeah, it all seems to work now.
Thanks for all the help and the patience man <3 really appreciate it
cool! I hope it made sense why I had you do all those things
anyone know how to setup the vrc8ball game
when already have udon because it keeps giving me errors and i dont know how to set it up
NullReferenceException: Object reference not set to an instance of an object
VRCSDK2.RuntimeWorldCreation.Start () (at Assets/VRCSDK/Dependencies/VRChat/Scripts/RuntimeWorldCreation.cs:82)
[12:35 AM]
im getting this error does anyone recognize this?
yes, that happens when you have a scene descriptor not set up properly. Try just dropping in the vrcworld prefab instead
82 usually happens when you have multiple pipeline managers in the scene
Okay, a probably not so dumb question: Does making slow update loop with a function invoking itself later through SendCustomEventDelayedSeconds() add on the callstack and risk an overflow if left to run too long, or do events like that get their own callstack?
those events get cleared as soon as they run, so it won't just continue to grow
I don't think a stack overflow is even possible in C#, though I may be wrong
or at least unity, maybe? idk
If I want to instance multiple objects at once, how do I go about grouping them? I thought I could just link all objects to the one instance node but that doesn't do it.
you'd have to put them in a gameobject array
is that doable with udon nodes? or requires scripting?
yeah of course
Any suggestions on what to look for?
gameobject[] set/get is different from a normal variable set/get
you'll have to search for it
kk
🙏 that’s great to know, thanks!
also you'll probably need to use the a 'for' loop to iterate through the entire array at some point, and to do that you plug the array's length into the "end" slot, which will make it execute multiple times, once for every item in the array
okay, this is all a bit beyond me. I'll have to look into this some more. Thanks for pointing me in the right direction though
I got the array made, I got the GameObject[] to GerLength and plugged that into "For" in the end int node. Not sure what to get out of that
The flow exit is Body and Exit
I assume Body is each of the game objects? but that doesnt make sense
I wonder if I need to pull a Get from my GameObject[] to reference that... trying that now
I think I got it sorted out now 😄 Thanks for your guidance @grand temple
i have a question is VRchat coming to PlayStation
Developer VRChat Inc. has not yet announced a VRChat Playstation release, but it definitely hasn't been ruled out at this point. According to a Tweet from the game's official account, the studio is 'considering' to bring VRChat to PSVR.
That a maybeish
Can anyone give me some tips on how to get a les big size for my world
Because mines 67 mb but I need to be way smaller like at least in 48
That might be better for #world-optimization
any ideas what this means
One of your U# scripts are failing to compile. Try to compile all U# scripts and check the console for errors and information regarding which script is running into issues.
how do I compile all?
If you can locate a U# asset file then you can select it, and in the inspector you should see a button that says "Compile All UdonSharp Programs".
Do you have the latest version of U#?
yeah
How about VRCSDK version?
Anyone familiar with making a VRChat card game for worlds at all, where the cards are randomized and can be drawn from an array?
(I know that you need to do arrays for it to work, but I’m more familiar with Udon, not Udon Sharp for scripting.)
The object pool has a built in shuffle function
Do you have an example at all that I might be able to see? I always am a ‘viewer’ and a ‘do-er’ but following stuff in text I swear I’m dislexic hahah. ;3;
I’ve not worked with the object pools yet.
The udon example scene has an object pool that automatically spawns cubes
Oh fair…Do you have the link to the example scene at all? Someone mentioned it before but I never was able to find it (Or at least, the updated one.)
It's included in the SDK
:stare:
I forget the exact path to it, but search for example in unity
I'm maintaining two dif projects instead of switching back and fourth PC-Quest, if I want to add a new pickup do I just ensure they are in the same physical location in each scene? I thought there'd be an 'instance ID' etc in vrc_objectsync, and there is, but none of the IDs appear to match up between projects and yet are synced when ingame.
yes, you need to make sure that network IDs match. To do that, the hierarchy needs to be in the exact same order
ahh got it, think I can make that work 🙂 Thanks!
Idk if this is where I ask, but is there finally a cutout shader for quest?
Ping me when someone has answer.. o.o
I have a problem with several udon nodes and manual sync, and found that this problem(variable not syncs) only happens when I disable the gameobject which has udonbehaviour inside it, so the question is, disabling gameobject affects the udonbehaviour attatched to it? I think udon behaviour itself works but some behaviour become very strange..
help i cant find information about using the combat system in udon
What part do you need information about?
there's one built into the quest package, but it's buried a bit. think if you go to crazy it could cause performance issues? I've had several in my own maps w/o complaints (so far?)
VRChat/Mobile/Particles/Alpha Blended
anyone know how to make QVpens work for quest? found the 'ink_quest' material and set the shader on the 'ink' prefab to match, but quest players arent seeing anything when they draw ;-; wasnt sure if I should ask here or world since it's not native udon..
I was told that a cutout shader is less intense than simple transparency, so you can probably abuse cutout lol
As in, a texture of an image with completely invisible areas is more intense than a cutout achieving the same effect
Is there a newline character that works in string variables?
/n
^ my bad lol. “Hello!/nWorld!” Would look like:
Hello!
World!
I dunno how to use the alpha blended shader.. It broke.. 😅
@fading cipher interesting then, as it doesn't seem to work when applied from a UIText[] array.
That sounds like it could be a bug 🤔
Yeah, I'd say so. I'll canny it. Cheers for the help, wanted to make sure I wasn't using the wrong char or anything.
Nah that’s what I’ve been using so far and it’s been great for all my text needs yeah
Are you sure \n works? I've tried applying it from an individual text value as well rather than an array and it doesn't work either.
that only works in U#
Ahh.
it would be annoying, but I think it would work if you use string format and then feed in a const integer of 10
10 is unicode for newline
What can I use to detect particle collision on an object?
onparticlecollision
Ta. I knew it was something like that, but i was digging into the colliders for it for some reason.
For public fields I don't believe there's a way to input new lines directly, you'd have to interpret the new lines inside of the code itself
how do i take a size down when everything is optimized but its at 95 when i need it as 50
which is very big gap
I'm trying to build a teleport button with Udon, it works, but instead of taking me to the TeleportPoint I have placed, it takes me back to spawn...Any ideas?
My only guess is the TP point's outside the map? IDK how big VRC maps can be, I know they force respawn if you fall to far...which this point would be pretty far below the current world, is there anyway to change that distance even?
and is vrc world right
for the main spawn point if so try
transform.localposition.localrotation
In the vrc world settings, where spawn points are set , there is respawn height, change that around as it sounds like it’s teleporting them under that threshold.
the main spawn point is fine and I just tried the localposition/rotation, but that...idk it threw me somewhere random...
That was it TY!
so how do i fix my world
IDK if you have it already, but VRCWorld Toolkit has a "world debugger" window that shows tips to optimize, along with after uploading the world, the debugger will show the file sizes from largest to smallest, so you could see if you missed something being optimized and focus on fixing those files...
I also tend to reset the Dynamic Prefabs & Materials back to 0 on the VRCWorld object before uploading, just incase there are some left over pieces in there that are unused...helps to clear up space as well
do u have the link the world debugger for toolkit
idk where to get the vrc toolkit
thanks
everything you need is on that page, np
all of the information i can get honestly
The base setup should be something like this
very helpful no what if i want an item to do damage? btw thanks for the help
I would recommend storing health values as an int or something
Easier to do health additions or damage if you do
Then you can just do a conditional setup that uses this
After your own stored health value goes to 0 set the players health to 0 which will cause the player to ragdoll
Does the interact event cause ownership transfer? or only collision?
Can I assume the interact event was caused by the current owner?
No but you could do interact > take ownership and get owner from there
Hello! I'm trying to dynamically change the "isKinematic" value of a rigidbody with Udon, as far as I can see the logic is correct and it works in the Unity editor, but when I try it in VRChat it doesn't work at all. Is there some limitation or I'm doing something wrong?
Could you share how you're trying to do it?
Wait, I think I found the problem, I'm guessing it's because I have an Object Sync on it, I was changing the values of the Rigidbody, but I probably should set the gravity/kinematic from the ObjectSync
Yup, that was the problem, now it's working 😝
what is udon?
?whatisudon
VRChat Udon is a programming language built by the VRChat Development Team for use in VRChat worlds! It enables complex behaviors and logic in VRChat worlds. Read more about Udon in our documentation: https://docs.vrchat.com/docs/what-is-udon
What’s this Udon thing anyways? VRChat Udon is a programming language built completely in-house by the VRChat Development Team. It is designed to be secure, performant, and easy to use via the VRChat Udon Node Graph, a built-in visual programming interface that uses nodes and wires (we call them “no...
In udon, do I always have to add something for late joiners to see animation states? similar to SDK2's "always buffer"
depends how you sync it. If you use network events, then yes you need to handle it manually by resending the event. All network events are AlwaysUnBuffered in that way. If you use manual sync, then you can just apply changes in OnDeserialization or in OnVariableChanged and late joiners will receive it in exactly the same way as everyone else
oh interesting, that's new to me
SDK2 synced with an event buffer, so if you receive 99 events saying on but then a single event saying off at the very end, the state will be off. It's kinda dumb but it can be robust to a degree.
SDK3 is completely different. There is no event buffer, it's all synced variables. Late joiners do not receive any information about what things used to be, they just know the current state. And you have to choose what to do with those synced variables
hi, is there i way i can edit this teleport script to give the player slight forward velosity as they exit the warp box
Sure, use playerapi setvelocity
It's global
0,5,0 would go straight up with roughly the same as a normal jump. If you want it relative to a direction you could multiply a quaternion (as in, the rotation of some object) with a vector
Quick question, how would you sync and objects location? i know their use to be a toggle, and i also know there was a message later saying to use an example script... just cant remember
thanks 🙂
is there a wait someware in udon
cus i want it to wait roughly the lenth of the sound before i teleport
Does Udon suport if statements
becase i have now clue how to do
if xpos of {Gameobject1} > 0:
Enable {Gameobject2}
if is Branch node
xpos of GameObject1 is equivalent to gameObject1.transform.position.x
Enable {Gameobject2} is gameObject2.SetActive(true)
@indigo wagon ^
chears
I'm right in thinking Udon doesn't currently allow clipboard access? Both TextEditor and GUIUtility.SystemCopyBuffer() are not accessible so I can't put a handy 'paste' button in my UI. :/
So this is a lil' dumb but: how do you make a variable Local Only? I presumed leaving Sync disabled would be all you need, but in a 2-client test it seems to always be syncing no matter what settings I use (i.e. disabling the Sync checkmark in the Udon Graph, enabling that sync checkbox and setting it to "None", setting the overall Udon Script to "Manual" sync mode... nothing seems to be changing.
Uncheck Sync box should do the job actually.
Btw, the "None" settings is for synced variable but without interpolation.
And what weird is manual sync should only sync when you call RequestSeriallization.
Hmmm... A'ight, neat thanks!
On those lines then: does the "OnPlayerTriggerEnter/Exit/Stay" node count for any player in the world, or only the local player? 'cos if it's the former then that might be my problem.
(For reference: first time touching Udon in like a year, so forgotten a good chunk of it lol)
It fires when any player trigger the event. It has a parameter indicating which player's triggering it though
Ahh, right Ok - I thought the two-nodes-only setup I had was a bit simple. Think I've figured it out (boolean yes/no on "Is Local Player?"), testing now
Didn't work... I think I'm on the right lines though, thanks!
Does anyone have a nice working door system?
There's a tutorial on making one here: https://youtu.be/95jRByYHE4Y
These features are currently available only on our Open Beta version - check our Discord for more information.
Learn how to make doors that automatically open and close to let players through. This tutorial will use the Udon Graph to work with Player Triggers, Haptics (aka controller vibration) and controlling Animators with Udon.
Music i...
is there an easy way to check if a station is occupied?
from another object. I made a variable pointing to the VRCStation, but I dont see anything like "VRCStation.get occupied" or somesuch
i am following a tutorial about synced toggles and when I try to choose the event name I can't
that's because you have no events
out of curiosity is it possible to use udon to create a zero-g enviorment? Kinda where you would be able to push and pull while you have yourself float through an enviorment?
yep
you can set gravity to 0 and i think the default behaviour is to follow the cursor direction
how ever to speed it up. itll require vector changes
where would i find it. looking at vrchats udon documentation it has a getgravity but i cant seem to find anything to use it (im kinda new to udon 😅 )
If you are using Udon graph you will be able to find it as Physics > Set Gravity and U# it would be Physics.gravity
hi
any way to find downloadable udon combat system
or how to create in udong graph and how
any video tutorial or example how to do that
any ideas ?
nope none
all i know is that that vrcplayerapi has the combat system but i never did anything with it
@cold raft
and maybe those nodes has some connection with damage system as well
i try to find on collider hit , receive damage and destroy on damage but nothing 😦
You can make your own combat system (the only thing we cant do yet is ragdolling a player for which I made a canny long ago...).
Howevet how you actually make that Im not gonna answer.
brilliant 🤒
Be aware anyone using holoport won't be able to move in Zero G. I'm thinking of creating a point to point teleport system for a zero g thing I'm planning for them.
Yes, I have a zero-gravity world called "Space Fruits." I did use Physics.gravity, but the VRChat documentation actually recommends against that, and tells you to use a PlayerApi propety called "gravitystrength" instead:
https://docs.vrchat.com/docs/player-forces#getgravitystrength--setgravitystrength
I haven't used gravity strength, but I wouldn't be surprised if they work a little differently. VRChat doesn't say why we shouldn't use Physics.gravity, but I've taken the risk that one day it'll become unsupported
Anyone know if a spline tool has been made for udon? Want to make an object follow along a path without doing heaps of animating
Anyone have a fix/script for horizontal platforms sliding out from under you while standing on top of them?
well the equal at the bottom seems always false as you compare a gameobject with a boolean
and udon set enabled need to be done on an instance of a gameobject so you want to connect an instance there
you can use a CinemachinePath to do this to some extent
@floral dove Sorry for the ping but I do feel like you should see this player's username and
BEFORE SYNC:
syncedvariable = api.displayName;
AFTER SYNC- REMOTE
api.displayName == syncedvariable is FALSE
Basically destroyed instance of my world when he joined. You could not compare his name at all..
I believe synced strings do not support characters above 127, or something like that. Not the total length, but the ID of the character itself
I would recommend using the playerid for most operations instead, that's going to use up much less bandwidth anyway
If I understand your use case correctly, then you could use name as a way to recover from players crashing and rejoining. But I don't think you need to sync that, you could just have everyone store it locally and then when someone new joins check if their name matches and if it does, the master gives it to them
No idea I don't know the player but when in Udon# you do what I described it doesn't work
Using manual sync
I need names as late-joiners need to know if the player has claimed a house and has it claimed even if he's no longer in instance
Every single thing in my world is manual sync so limit is lot
Syncing maybe 3kb of data ?
yes, late joiner A needs to know that they used to be the owner of house A, but does late joiner B need to know that?
if late joiner A leaves and never comes back
Yea Late joiner B needs to know that
as soon as player A comes back, the master could give the house back and then you could go back to using playerids, at which point player B would know
as if late joiner B doesn't know that they could claim that house/ won't know who the owner of it is
you could still say that the house has already been claimed, even if player B doesn't know who
= Chaos
ok, then sanitize the names
Name like this should not be allowed anyway
that's not the problem
I'm just gonna make a protection and if the name is broken like this one is I'm not gonna let the player to claim house 
Not my problem that they are trying to break VRChat as they said
there's nothing wrong about that name though. It's actually kinda common
Seen thousands of people go through my world
lmao nothing about that breaks vrchat, they're just trying to sound edgy
Never seen anyone with that kind of thing
right - to properly compare strings, you don't use '==' for exactly this reason, you use String.CompareTo: https://docs.microsoft.com/en-us/dotnet/api/system.string.compareto?view=netframework-4.7.2#System_String_CompareTo_System_String_
that should handle proper comparison between strings with unicode characters, etc
"identical characters", so yeah conversions can definitely mess that up
Also https://docs.microsoft.com/en-us/dotnet/csharp/how-to/compare-strings
So yeah .Equals and == should be identical, however CompareTo does something slightly different
uhh is this not good
I've been getting those errors too in at least one project recently. I hate ignoring them, but I do, and nothing else is going wrong that I know of. They clear when I try to clear them, so 🤷♂️
Hey there, I'm trying to figure something out.
I'm trying to get a screen to stream a certain website instead of just youtube.
I want to to stream twitch.tv but for some reason even when i get the texture and material going in the correct area it still doesn't show up in game or when i press play
Yeah, got that too just loading the SDK
I removed the Cinemachine package and I'm trying again
yeah, this is concerning. New project. Just released SDK and nothing else.
Yeah I can't load Udon Graph
if you can clear the errors, then it's fine
It's a feature, not a bug.
not sure if those are the errors that can be cleared though. Are you sure you're on 2019.4.29f1?
yeah, if you're getting this then all is good
it's just some errors that appear mid-import that are fine after importing
I expect another SDK release and possibly client release very soon 😛
dammit does anyone know how to properly make voices louder in a certain area then
Gonna be some bumps, I think I'll upload stuff tomorrow
eh, it used to clear those errors automatically but it was clearing too much so we chose to remove it for now
I'm telling you, it's fine. Just hit clear
If you just imported the 2019 SDK and see some errors about assemblies not loading, press 'clear' on your console. If they go away, then everything's fine! Just some stuff happening slightly out of order.
^we can refer people to this pinned post if they see the issue.
im trying to migrate over a project, but no matter what i do the sdk always breaks
ive tried just importing with the old one there, removing the old one then reimporting new one. neither works
ive followed the documentation exactly
cyan triggers also seems to freak out but im less concerned about that
Hey, I'm not sure if this is the right channel to do this and I apologize if it isn't but, I'm wondering if there are any "Up to date" vrchat udon (SDK3) unity tutorial Youtube playlists that will show me how to do basically everything (A large playlist full of tons of tutorials full of different things useful to know, because I'm tired of having to switch to different peoples channels and be taught stuff I was just taught) If so please DM me the "Playlist" or just send it by replying.
yes, Vowgan has some good videos https://www.youtube.com/channel/UCMLgCTDbjvOjMRsyLLbuuqw
Thanks, I greatly appreciate it!
hello?
Is there a way in Udon(Sharp) to tell if I'm running inside the Editor (with Cyan) and skip stuff that won't work there?
yes, in udonsharp you can do #if UNITY_EDITOR, your code, and then #endif
Ah Cool
code inside that will not even compile to the finished version
Ah
I suppose I could have a 'inEmu = true' inside one of those in the start method. Then have other code check that before running.
yeah, exactly
I'm basically testing a video player control panel panel and I want to check it's behaviour and animation works even though the video player part can't work
When upgrading to SDK 2019, Do we just drag and drop from SDK 2018 -> 2019 or should we still delete the UDON folder in the Unity Asset folder like before?
Read the migration guide @vast locust
If you're using UdonSharp, ~terrible things~ will happen if you don't.
I have.
Should we still delete the UDON folder like we should have in 2018 projects as it has been recommended in 2018 projects to prevent any old Udon scripts from laying there
I mean, needing to recompile can't hurt really?
the 2019 SDK is not compatible with unity 2018, don't import it until you have migrated to unity 2019
How do i start off with udon? i want to make a game world in VRC but i can't seems to find the right documentation for gettting fimliar with Udon. I found some channels making basic things but how can i advance?
Yes i have read the documentaite on vrc website but it gives a vague explaination of how to use udon
If you're still struggling to get things to work, vowgan's tutorials are a great place to start. If you're already comfortable with throwing scripts together, it could help to go over unity's documentation on all the different functions. Most of the time, it is pretty one to one since udon uses all the same functions.
So i should focus on game dev in unity first before making games for vrchat i udon?
no, I mean unity documentation applies to vrchat development
because udon just exposes all the same functions
anything related to transforms, gameobjects, animators, it's all the same
the vrchat documentation is definitely lacking in some places, but if you want highlights I think these ones are the best resources https://docs.vrchat.com/docs/players
https://docs.vrchat.com/docs/udon-networking
You can interact with Players in your world through the VRCPlayerApi. Each Player has a VRCPlayerApi Object, and your world fires the OnPlayerJoined / OnPlayerLeft events on any UdonBehaviours that listen for them when a player joins or leaves. This page includes info on using some general nodes. Si...
The three main concepts used for networking in Udon are Variables, Events and Ownership. Variables are containers for values - like a number, a set of colors or a 3D position.Events are things that happen at a moment in time.Ownership is the system that decides which user can update a variable, wh...
I have a bit of experience with 2d unity but yet to make a 3d games in unity.
Hey guys I hope someone knows the answer to this. I instantiate a cube and in my udon code I refer to const this so that the instantiated object can refer to itself but when I come across that code in action it says that it wasn't set as an instance of an object
what are you trying to do with 'this'?
Instantiation is local-only, but you should be able to do things with the GameObject or Transform
Changing properties of it on pickup and then on drop reverting the properties
what properties are you trying to change?
ooohhhhhhh. really? I've seen object spawners that show other's the object spawned. unless this is through another method.
Collider isTrigger, RigidBody useGravity, position, velocity
Yeah, for synced Instantiated objects, you can use an Object Pool: https://docs.vrchat.com/docs/udon-example-scene#objectpool
if I take an int X , do request serialization, flow right to incriment X+1. would OnDeserialization propigate X or X+1. Should I instead do requst serialization, flow to a send delayed custom event (0.4) which does the incriment x+1 instead?
setting a variable immediately after requestserialization will also work, yes. It will wait a couple frames before onpreserialization and onpreserialization is the last moment that you can change something before it will be sent
thanks
Hey, this youtube playlist isn't much use to me know cause I had "Just" started and it doesn't say how they even got the mirror and I have zero experience with unity.
I'll watch it later once I figure out the "Basics" cause I don't even know how to upload or make models.
in that case you probably could start here https://docs.vrchat.com/docs/setting-up-the-sdk
Requirements We're going to need a couple things before we can get started. Current Version of Unity. We strongly recommend using Unity Hub, available on that page.VRChat SDK - See the Choosing your SDK page to see how to choose the correct SDK for your use. Step 0 - Installing Unity Check the Cur...
Depends on where your at with your familiarity with unity. If your just starting out, I would look over the VRChat examples, and try and do some similar scripts to do simple things like toggle on and off a mirror. Once your feeling more confident, i would move onto doing small things that don't really have a tutorial, but are simple enough. And example of that would be something like a panel that players can change their speed, jumping and gravity stats and what not, or perhaps player voices; try making it global or not; try making it only master, etc.
After your semi confident in those sorts of things, I would move onto making simple codes by deconstructing others code. Look over a collections like seen at https://docs.google.com/spreadsheets/d/e/2PACX-1vTP-eIkYLZh7pDhpO-untxy1zbuoiqdzVP2z5-vg_9ijBW7k8ZC9VP6cVL-ct5yKrySPBPJ6V2ymlWS/pubhtml#, and find something that interest you and work of it. Perhaps grab Vogans 'VRoomba v2' asset and take the gun part of it, make a bunch of targets and make a simple arcade-like gun range or something. Only at this point can you really start making games that use some real logic, unless you just copy and pasting some assets and just using what your provided with (no real problem there either). I would highly recommend at this point (or even earlier if you have some past experience with c#) moving onto scripting with udon#, or at least getting familiar with it. You'll find that while udon graph is rather nice starting point, but the constant compiling in more complicated scripts really makes it slow to work in. At the start, udon graph nodes can be useful for understanding udon# too
As for the game you want to make, I would make a testing world where you just play around with trying to make different bits of logic for the world. Simple things like say a gun if it's a shooter. If your finding it's taking you ages to make, backtrack and make a world where you just play with udon logic, without a clear goal in mind to avoid burnout
how do i fix this and i think i may have good idea what broken
If you try enter play mode it should show up in the console what the cause is
yes. i was testing before i upload a patch
i think it the game board is broken
how i know. this told me
yup. game still broken.
now should be patch 🙂
anybody experience users CRASHING from a video player?
using UdonSyncPlayer (AVPro)
I was just showing my world and I started a video player and by the end of the 1ish minute video, 2 people froze and crashed, and the rest of the 5 or so people did the same by the end of the video.
Just playing a video from my dropbox, I did have Use Low Latency enabled, and Enable Autoamtic Resync enabled.
i still try feel around with bug. it seem that i cant test my world but i will just upload my test world and see what happen
well what kind of help do you need?
neat. i can upload it even knowing it will not let me test it. o.O
oke so you make a colider, like a box collider and be sure to set isTrigger on it
then add an udon graph behavior on it', give it 1 public variable of type game object and name it like target (it will be the object to toggle on and off)
then you need the events OnPlayerTriggerEnter and OnPlayerTriggerExit for each of those check if the VRCPlayerApi they provide is the local player (as this event also triggers when your clients sees other players go through the trigger)
if they are the local player, then do gameobject.SetActive on the instance of the variable with either true or false
i can make the grapth but then i first need to load up unitiy 😄
i really do hate this
you place the udonbehaviour on the same gameobject as the trigger collider
those events OnPlayerTriggerEnter/Exit will trigger when the collider this udon behaviour is put on its entered / exited
the only variable you need is to tell it which object to turn on/off
That's outside my realm of expertise unfortunately
So any idea why Quest might be exploding in my world ? https://vrchat.com/home/world/wrld_42d023dc-1b2d-439a-b741-09113ca0e59a
Anyone had any problems like this ? Where quest goes into overheat
my vrchat is crashing and i dont know why can someone help me? (im new here)
Couldn’t handle your swag
does Udon have an "Is active" Bool i can use in a branch?
Is active what?
there a block that activates and deactivates objects (basicaly makes them diappear)
i want to know if theres a way to check for it
gameobject
found it
Yup, I removed it from my world due to that same issue.
What layer should I be using if I want an object to react to colliding with another player while held? MirrorReflection only seems to work on the local player, and doesn't even seem to work for just the receiving player reacting.
You can look at the Collision matrix under Edit > Project Settings> Physics to see how the layers interact
Fixed my issue by removing the sync components. Both the resend features and the low latency or whatever the other streaming sync option was. No more crashing. Syncing isn’t as important to me as the video played is only a minute or two.
I'll resort to that if there isn't a fix before I publish the map, thanks.
Thanks for mentioning it. Looks like the auto-resync checkbox is causing some issues.
Does anybody else have problems with udon scripts (nodes only) after upgrading to 2019?
I checked my world after upgrading. Everything worked. The doors that i use for transporting to different places & back are fine. After changing a material from the door, i am unable to use the button/door to teleport.
This is for teleporting to a place
And this one is for going back to the beginning.
And yes, i uploaded it before changing something.
FIXED! All i needed to do was to drag & drop all the scrips to the right targets etc.
How would i go about makeing a moveing platform
becase ive goten a platform to go to someware but not back
Wait NVM im stupid i can just use an empty to store direction
If you catch something like this again you can try the menu option VRChat SDK > Utilities > Re-Compile all Program Sources, will often fix missing-program issues after migrations, especially on prefabs.
my question now is how do i make the platform move gradualy
so the player moves with it
Up down is fine by animation, lateral movement is .... very tricky and there are a few solutions but none as easy as just animating it back and forth. Best solution I’ve experienced is small teleports
Someone recently demonstrated a teleport solution but I’m not sure on what update loop they did it
so basicaly the solution is teleporting reltive
is there a way to get a local player into a game object?
or a way to add vector3?
surely theres an easyer way than this
Just updating my udon world to 2019 and cant seem to find the settings for player speed and jump impulse settings. Did they move??? Its not in the inspector any more for the vrc world.
does it not have an udonbehaviour? Or does it have an udonbehaviour with no programsource?
It has the folder but the info is not showing in the inspector to change speed and jump values
what do you mean by folder? Could you provide a screenshot?
Its just udon behavior folder in the project folders. Im limited in the amt of C# I know. Usually when I pull in the SDK, and select VRC World in the hierarchy, I can adjust those values in the inspector. Its missing.
Ive reloaded the sdk
yes, I understand that something is missing. But to know what your problem is I need to know exactly what is missing. It could be a number of different things
screenshots would help a lot
do you have the vrcworld prefab? Does the vrcworld prefab have an udonbehaviour? Does it not have the right udonbehaviour? Does it have the right udonbehaviour but that udonbehaviour doesn't have any variables?
Hang on a sec. Going to go back to the old file
I have a good understanding of C#, i just wanna know
where would i start with making an object follow a player
planning on having a "VIP" list of sorts that's hard-coded and I want to put a thing over their head (preferably facing the camera at all times, but i can just use a particle for that i'd imagine)
what would be the general idea/setup for that?
Jetdogg’s prefabs has a follower prefab if I recall
do you think a locked rotation and look at/aim constraint to the local player's head would work?
lemme look
I have a prefab that you can drop into your scene that fixes this
Still a work in progress but I can send you the current version
@grand temple I had to create something in udon graph with noodles. Before the update the udon behavior would show in the inspector under VRC world. Since updating the sdk it is missing and has to be entered manually to show in the inspector
0.0 a prefab that allows moveing platfroms
Yeah if you want I'll dm you it
ill give it a try

