To everyone experiencing problem testing this, as said in the comments you have to place the FX controller into the animator component of the avatar But ALSO put the culling mode to ALWAYS ANIMATE, it wasn't working for me in play mode until I did this, and it wasn't like that by default Hope that helps
Yeah, I have had a lot of people not know how to test things in Unity which I didn't think to mention when I made this video! It's definitely something I try and mention in newer ones though! Thanks!
THANK YOU AHH!!!!! it all worked perfectly! some throubleshooting if youre new to unity like me, 1. if you can't hear the audio of the boop in play mode, move your main camera closer to your avatar and inside the circle of the audio source 2. make sure the sound on and off keyframe animations dont start too late or end too soon for your audios duration 3. if you want larger particles ( I wanted bigger hearts), go under renderer in the particle system and change the min/max particle size !
I'm glad that it worked for ya! And yes, those are good tips for people that might have issues with those things! I'm going to be making a tips and tricks video for keybinds and navigating through Unity soon so that it's easier for people to know about some of these things since it can be a daunting program to start with. The keyframe animations tip is especially important for the audio clip though so that it can play the full sound!
This tutorial is awesome, been using the other ones to attempt having a held object go between 2 different constraints and using the senders/recivers to make it all automatic. Goal is to have a joint that can switch between my mouth and hand just by putting it in the right area and using a gesture
Sounds awesome! I am polishing up my lightsaber at the moment (does exactly what you described) and then I will likely make a tutorial either explaining that or a different object that I've made so people can have a better understanding of moving objects around and in world space with parent constraints.
@@Wolfy527 Awesome cant wait for the vid! I got it mostly working only issue is that it works on my end in vrc but sometimes the switch from one position to the other does not happen on other peoples end.
@@deweydonovan9926 That actually has to do with networking by making the float a bool and putting that in your expressions parameter list. I made a video explaining that as well ^.^ hopefully it can help ya solve that problem!
@@Wolfy527 Tried following the instructions given however the bullet network sync layer didnt help me much and when using play mode I could never get the VRC avatar parameter driver to output a checkbox when in game mode.
@@deweydonovan9926 unfortunately parameter drivers dont actually work in unity themselves when play testing, but they do in game. If you want to know if the bool itself works with you animations just toggle the bool on/off along with any other conditions you have set to trigger your animations to play.
hey! i was just curious what the difference between the constant/proximity option on the receiver was.. i was using it for my avatar and it didnt seem to work :)
Glad that you liked the video! And yes, you will want to make your animation that you recorded to toggle your audio source on the same length as your audio clip, i.e. if it is .5 seconds long, then make sure that there is a second keyframe that is toggling the audio source on at .5 seconds into that animation. You'll then want to make sure that in your animator, the exiting transition from your on animation to your off animtion has "Exit Time" set to 1 so that it will play through that entire animation once before it leaves it!
When I do as the tutorial tells me to do, I have something strange happening; The new animations do not override my currently playing animations, they add on to them. When my avi is already smiling, and the boop makes her smile, she gets this admittedly funny cartoonesque super grin, but I would like it if that did not happen. :') Is there a way to make it cancel out all other facial animations before applying the boop one?
You'll want to make sure that your layer that does the face expression when you are nosebooped is below your face expressions layer that you do with hand gestures and you will also want to make sure that your reset layer is looping properly in a layer above your hand gesture and noseboop layers.
@@uwabami6630 Are you using Write Defaults on or off? If you toggled them off, then you'll want to make sure you've followed through Cam's video in the description to make sure your face layers reset fine before adding the boop effect. If the boop effect itself just isn't triggering then you'll want to make sure your receiver is going off properly to trigger the animation in that separate layer.
@@Wolfy527 have them off, followed cam’s vid and everything but something is still not right maybe it’s just unity being unity and it will work if i reimport into a different project idk anymore
You'll want to make sure that the timing on the particle systems are lining up properly with your animation length, otherwise the animation may not be long enough to allow for the particles to emit properly.
Ok so uh... I'm a total noob at this I've set up both the sender and receiver, they work, but the 'boop' parameter in the animator tab doesn't change... idk what i'm doing wrong
You'll want to make sure that your FX Controller is in your "Animator Component" on your avatar's base when you click it. If it is in there then you'll also want to make sure that the parameter name on your receiver is exactly the same name in your parameter list in your FX Controller and that your animations are using that parameter's value to changed between animations (i.e. the transition conditions are using that parameter to know when to go between animations).
When I boop myself in Unity, everything works fine. But when I or others try to boop my nose, nothing happen - no face expression or Sound (I don't wanted to add particles). Can someone help me?
You'll want to make sure that the receiver is setup to receive from fingers/hands, not a custom tag. That is my initial guess as to why it works in unity, but not in-game! Let me know if ya still need help!
Sorry for the delayed response! Just got back from a trip and can respond to questions now! What is happening is that you likely turned "Write Defaults" off when your avatar is not set up to properly to be used without Write Defaults. If you search up cam's write defaults explanation video (I also have a video that demonstrates setting up face expressions without using write defaults and it also links to cam's video if you want to go there) that will give you a better explanation as to why the face expression gets stuck and how to fix it!
You can use transition-duration on the transition out of Boop particles/sound/expression(face), as well as Idle for empty spaces and less lag. I wish I could show you with pictures, but here: Entry->Idle(0 exit/0 transition)->BoopFace(0 exit/0 transition)->Idle & Entry->Idle(0 exit/0 transition)->BoopParticles(1 exittime/0 transition)->Idle & Entry->Idle(0 exit/0 transition)->BoopSound(1 exit/9 transition%). I put long transition depending on how long I want the cooldown to be, and to give time for my slow falling boop particles to dissipate. All in all you get the same output with less demand and ticks. You can do a similar thing with hand gestures and Idle, e.g: Entry->Idle(GestureL Equals 4 @ 0.1 Transition duration)->PeaceGestureSMILE(GestureL NotEqual 4 @ 0.1 Transition duration)->Idle This can be done for each. Less ticks, less lag, and a lot more versatility in gesture combinations. MAKE SURE YOU USE EITHER ONLY "Write Defaults" ON OR OFF ON ALL LAYERS. I recommend ticked ON with all of them, that way gestures reset automatically.
If you did it this way then you would want to use an "OnEnter" and not a "Constant" receiver. But if you end up needing/using a "Constant" then you'll want a buffer so that your animation doesn't keep looping in and out when someone holds their finger there. It forces them to pull their finger away before they can trigger it again. To be fair I would probably set this up a bit differently now than I did before, but running your layers like this is not going to cause any extreme amounts of lag or cause a noticeable difference in performance for people. But the way you have yours set up does use fewer ticks and would technically cause less lag in an extreme scenario.
You can create a toggle for the receiver gameobject. That way you can turn that gameobject on and off in your menu, which will end up turning on or off the noseboop as well.
Im having an issue that i cant seem to fix. The animation i made for head patting my avatar closes her eyes. I wanted her eyes to slowly close when someone pats her. When her eyes are closed already because of an expression, she opens her eyes and slowly closes them again when patted. I don't know how to fix this issue ;--;
I think if you make the animation for your head pat just one keyframe and then set a like .25 (default) transition time into the animation, then if your eyes are already close, they should stay close, but if they are open, then they'll transition smoothly into the closing eyes. I presume that you have this animation playing in a new layer that isn't a part of your expressions layer with your hands (you'll also want to make sure it's in a layer below your hand expressions layer so it can override them).
They actually took out values! So it is either 1 or 0 now (i.e. true or false for bools). So it defaults to 0 (i.e. false for a bool) and is set to 1 when contact is made (i.e. true for a bool).
If your animation to toggle your sound on and off toggled the game object, then you'll want to make sure that your gameobject is off in your hierarchy by default. If you just toggled your audio source on and off in your animation for the sound, then make sure your audio source is off by default in your hierarchy. That should fix the problem for ya I believe!
Ah yeah there's a couple ways to get stuck in bicycle pose if you don't stop recording/previewing once you finish recording animations. If you have Pumpkin's Avatar Tools you can use the pose editor to reset your avatar back into TPose.
In playtest mode on unity, the boop works perfectly fine However, when I go ingame to double check and see if it's working, the boop face is *always* on and other gestures move the face around but don't reset it back to the normal face
I linked a video in the description that teaches people how to turn write defaults off properly on their avatar and not break things. It should help you resolve your issue with your face gestures sticking when you use them!
@@Wolfy527 followed the video and got everything to work inside of unity. however, when I load the avatar (or even reset it) the boop anim still plays even though there is nobody else in the world all of the gestures play over the boop face and all of my toggleable accessories work perfectly fine edit: booped myself ingame, which continued playing the boop animation, and then moving my finger turned off the animation do you know how I get it to stop playing when the avatar is loaded and *only* start when someone boops?
@@BetaProtogen What you'll want to do is create a buffer animation that doesn't play anything (presuming you're using a constant receiver) that your animation goes in to when your boop while your boop is true. I.e. you go from boop off --> boop on --> boop buffer --> boop off (for this last one have it transition into boop off when your boop parameter is false). Also to make sure that your boop doesn't play when you load in, just make sure that your particle system is toggle off by default so it doesn't load in as on by default.
@@Wolfy527 just clarifying because I am a little confused, should the hierarchy be Any State > Boop Any State > Off Off > Boop > Buffer > Off? And what arrows should I set to greater or less than? also I am just using an animation, I am not using any particles or sounds
@@BetaProtogen Oh if you're just using an animation then just make sure your boop layer is lower than your face gestures layer and just have it go from an empty clip (not any state) to your animation that you want to play when boop is true. (Use a bool, not a float. Bools weren't available for contacts at the time of making this video so I didn't use one.) When boop is true have it go into your face animation, when it goes back to false have it go back to an empty state. Make the empty state your default state as well.
I would start by checking that you have the parameters for the boop in your parameter expression list that goes in game and then I would also make sure that your receiver interacts with fingers/hands incase you might have been testing it with a custom tag while in unity.
Question: In the "playmode" (idk the right name) of unity... If I try to change parameters via sender... or if I change parameters (for example the facial ones) nothing happens... D: (The facial ones work 100% - I tested them ingame.) Where/what's the problem? D:
What you'll want to do is make sure that your FX Controller is placed in your animator controller. The animator component is located in the inspector on the right when you click your avatar's base in the hierarchy. Once that is in there you should be able to test things in play mode by changing parameters and using the contact system.
In the description I included a video for how to turn write defaults off properly, although you should be alright to leave them on if your avatar uses them on by default.
So i followed this to do a head pat version. i have my ears rotate and those wont come back up when i move the Contact Sender away. i have the fix for write defaults, is there something special for transforms? ( i do have the physbone components to is animate as well)
You will want to make sure that your FX controller is in your animator controller component in the inspector when you click your avatar's base. That will probably fix your problem. Also make sure your sender you are testing with is on your avatar's base, otherwise it can sometimes glitch out and not trigger the receiver to change the parameter's value.
Hi, thanks for the video but I can't seem to get it working myself! I have my FX controller into my animator on the avatar and I set culling to always animate, but it doesn't seem to react at all to the sender, anything that I might've missed?
Nevermind! I was just having a issue on my side! turns out you need to put the FX controller in before going into play mode. Thank you very much for the tutorial!!
If you use an OnEnter, then the spamming shouldn't happen (make sure looping is off in the particle system). If you use a constant receiver then you'll want to make sure looping is off on the particle system and that you create a buffer animation in your layer to capture your animation and wait until someone's finger leaves the receiver before it resets. I.e. Boop off --> Boop On --> Boop On Buffer --> Boop Off. From Boop Off to Boop On you just have the condition be your boop parameter being on. From Boop On to Boop On Buffer you just have Exit Time = 1 and no other conditions. From Boop On Buffer to Boop Off you have the boop parameter must be false so that when they take their hand away, then it will reset the particle system and allow it to turn back on.
You have to click the record button for the animation so that it will capture the toggle in the animation. Then you just change the name of the game object to something that doesn't exist by clicking it in the animation and pressing "F2" and then renaming it so it turns yellow.
in unity, everything works perfectly, but in game, other players have a delay before anything is triggered once its in the receivers zone. i have all of the transitions time set to 0 and nothing that i can find in the layer is giving it any delay. It is instant in unity playtest and in game for my client, but everyone else has a noticeable delay before it gets triggered, like they have to hold their finger in place for half a second.
That is likely because of having it set to local only instead of turning that off. If you want the nose boop itself to be more responsive for others (although it might not go off for you sometimes even if it goes off for others), then you coudl turn off the local only option on the receivers and allow for the animation to play whenever someone else sees themselves interact with it, opposed to the animation playing when YOU the local player see them interact with your nose.
@@Wolfy527 local only is disabled and still haven't found a fix. I think its just the way my avatars fx layer was setup. Weirdly enough. I got it to where its instantaneous if others watch me boop myself and its instant locally. But if someone boops me, its delayed by about half a second.
@@Kawachi69 Yeah that is likely just due to latency between you and them to be honest. Other than that, you'd just want to make sure that nothing is running based off of "local only"
i need some help with this, i did an animation for my character that closes its eyes and he gets blushed, it works fine in the play mode on Unity but when i go in game the eyes don't close but the blushing works..
If you created a separate layer for your nose boop affect, then you'll want to make sure that layer is below your hand expressions layer so that it can override that layer with your animations in the nose boop layer.
Can you provide the "1 second empty clip" ? I have an empty clip provided by a package, but it barely does anything, the particles just disappears as soon as my nose isnt touched.
what you would want to do is make your animation for playing the particles however long your particle lifetime is. I.e. if you have them play for .75 seconds, then make your animation that toggles them on .75 seconds long. You'll also want the transition out of the state that turns the particles on to have "Exit Time" that is set to 1, so it will play that entire animation before it exits out of it and turns them back off.
hello,i really need help,i tried all day During playback, when my transmitter touches the receiver, the display changes from 0 to 1, which means the setting is correct and there is a trigger But my FX is always on the preset animation and won't turn on the NOSE animation due to the trigger I have tried setting BOOL float Int but nothing happens🥲🥲
Hmm, do you have your FX layer in your animator controller component in the inspector? That might fix your problem if animations aren't playing on your avatar when trying to test.
If they're stuck in the animation to play the face and sound then you'll want to make sure that your transition back to turn it off is set up correctly so that it can transition back. If your face is stuck and you are following with WD off, I'd encourage you to watch Cam's video about WD being turned off as well as I have a video showing generally how to set up your face gestures with WD off. If you want to just use WD on, that is fine as well!
I've tried this several different ways and very way gets me the same result. In order to see anything occur, I have to put the FX controller into the Animator script. In game, nothing works. But the sender interacts with the receiver because the parameter value changes to 1. I'm so confused.
Do you have your FX controller in your FX Layer in the avatar descriptor as well? Under "Base Layers" at 2:00 you can see my FX controller also in my FX base layer in my avatar controller half way down the screen on the right side.
What about in situation where you have HAI 's combo gestures. I'm getting to issue where setting up my facial animations and then trigging them will not revert the face back to what is was before. It just gets stuck.
I believe HAI's combo gestures actually has the ability to select using write defaults off when setting it up. I'm not sure if it will let you convert a system you're currently using over to write defaults off though.
I believe the easiest way to make this toggleable would be to toggle the game object that has the noseboop receiver on it on and off. I.e. you can just make a normal menu toggle that is on and off and have that toggle your noseboop receiver on and off.
is there anyway to make these a toggle in the expression menu? Like say that you want to turn off the ability for someone to boop you in your own expression menu. besides turning off avatar contacts in setting on vrc?
What you could do is just make a boolean that has to be true (along with the other conditions already shown in the video). That way, if you turn that boolean off in the menu as a normal toggle, then it won't allow the boop animation to play because the boolean being true is also required in the transition conditions along with the contact receiver needing to be interacted with by a hand or finger.
@@Wolfy527 and another thing a friend has pointed out, is that my nose boop sound doesnt play out completely or quick whenever they do a quick boop only the particles go fast. You have to hold the finger there for a second then it will play. Is there a way to fix that?
@@kagaminetwins1851 If your sound doesn't play completely, make sure that the animation for turning on the sound is the same length as the audio clip. I.e. if the autio clip is a second and a half, then you'll want your animation to go to 1:30 in the animation tab. You'll also want to make sure that the transition FROM your animation that plays your sound has exit time set to 1 so that it plays the entire sound clip and then transitions out of it!
Hah yeah I do have to go through thing a bit quickly. Depending on someone's familiarity with unity it might be a bit quick. The video would have been extremely long (already 26 minutes) if I had gone slower though.
Just doesnt work no matter how much I try, putting the FX into the controller is killing my avatar. P.S. when I press play mode only my base layer is on full blue line.
If you aren't normally using write defaults off with your avatar then you can follow Cam's youtube tutorial on how to set your avatar up with write defaults off. This setup should technically work with write defaults on, but the animations themselves might need to be modified a bit.
@@pinkwolfgalaxy4055 If you follow cam's video or really can't get things figured out just message me on discord (Wolfy#2727) and I can see if I can help ya out!
You'll want to make sure the sender that you're using to test is on your avatar in unity and that the parameters are named the exact same thing. You'll also want to make sure your FX layer is in your controller in the animator component in the inspector so that you can test things on your avatar in play mode. Also, you can use bools now instead of floats if you want!
Hey mate, I followed the tutorial up to the animation place so far, and somehow I got it that the default expressions of my model has become a blep, instead of only blepping when booped. Any idea how this happened or to fix?
If you ended up turning write defaults off to follow this tutorial, I linked a video in the description that teaches you how to set up your avatar expressions so that they work with write defaults off. If that doesn't seem to be the problem though, then just let me know and I can see if something else is wrong!
@@DoomDutch Hmm. So you have your default state in the boop layer as an empty clip, and only go to the blep animation when boop is true and then return back to the empty state when boop is false right? And this layer is below your face expressions layers and your reset layer?
@@Wolfy527 Right now from my 'Any State' it goes to 'Empty Clip' when 'Boop = less than 0.5' & from 'Any State' to 'Blep' when 'Boop = Greater than 0.05'. When the Game State is playing, it does show that the 'Empty Clip' is running in the Nose Boop Layer, but in the scene it's still blepping. And yes, my Nose Boop Layer is all the way down the list of all layers.
You will want to make sure that your FX controller is in your animator controller component in the inspector when you click your avatar's base. That will probably fix your problem.
You'll want to make sure that your camera has an audio listener component on it and also when you go into play mode there is a toggle towards the top that is labeled "Mute Audio." You'll want to make sure that the toggle isn't turned on as well in order to hear things in play mode.
There is a button in "Game" or "Playmode" in the top right of the game window that has "Mute Audio". That might be checked which won't allow you to hear what's happening when you test things.
@@Wolfy527 Alright that worked, didn't actually even have a camera in scene. But now I have a new issue, where you see how the blue bars move on the bottom of the states to show that the object is responding in play mode, for some reason the bar only goes max 1/5 the way. I'm still trying to make the slap work, it works and plays the sound fine when I set the receiver to "Constant" like you had in the video but when I have it set to "On Enter" which I want so that the slap sound only plays when I swing at someone at a certain velocity, it just goes 1/5 on the bar and never gets to play the sound.
@@Wolfy527 so, when ever I punch someone, it would make a punching sound effect. I got it working so that when my hand (receiver which is on my wrist bone) came in constant with a head/torso, it would make the effect.
@@Wolfy527 I put the audio clip on the wrist and the script too. It did work in the play mode in unity however it said it couldn’t find the animator controller parameter I made.
@@Wolfy527 I also tried making it so I could toggle it… also is it in the FX you should creat it. I have never made avatars before, so this is my first one.
@@cinnythedeer8067 Nah I've done that before and I've had a lot of other people ask about it as well! Glad that fixed your issue, it's a learning process haha!
Hmm, you grabbed the newest SDK from the website correct? If so, do you have errors in your console that could be preventing you from going into play mode or causing things to not work?
Do you have any idea why my animations get stuck, as in it plays my Happy animation but doesn't revert back, as soon as the Sender touches the Receiver?
@@Wolfy527 Wow, thanks for the very quick response! I made sure that I put the write defaults off, just like you did in the video. I only rushed through his video, but I will make sure to go through that one first and then come back to yours. Cheers!
@@Toubsh No problem! I highly suggest watching Cam's video so that write defaults off makes sense for people. You can technically do this with them on, but I make sure people know that I personally use them off and make these tutorials with the thought in mind that they will work with write defaults off and should work even with them on, although it isn't a guarantee.
@@Wolfy527 I went through with his tutorial and the boop works now! But the problem is that I have issues with my toggles now, like my hoodie and shorts activate but I can't unequip them anymore, my ears don't move anymore when I do certain hand gestures, I made the boop work but a lot of the other stuff not work anymore :/
@@Toubsh So the thing with write defaults is that you technically wouldn't need an animation to toggle objects off when you wanted them off because of the nature of write defaults being on. With them off, you would have to make an animation that toggles off your different pieces of clothing and such and a transition that runs to it when "X" is toggled off. Your ears I'm not entirely sure about though. If you want to try creating the boop effect with write defaults on, I believe you would just need an empty state running to a "boop on" animation and then back to the empty state after it plays through the entire boop animation and it will automatically toggle itself off. There's a lot of positives and negatives to using write defaults on/off and it just kind of depends on what people want when they do things. The upside of write defaults off is that an object or toggle would stay on when you switch between different animations in a layer. I.e. if you toggled on a shirt with write defaults off, you could have it run to another animation in that same layer and it wouldn't automatically toggle it off. If you did this with write defaults on, as soon as you leave your "Shirt On" animation it will get toggled off. Sorry for the long winded response, just trying to make sure you know the difference between the two and what they let you do!
@@Wolfy527 at first it wouldn't play the animation but when I moved it to where rezollo has his nose twitch in the hierarchy it started playing the animation but doesn't exit
@@jacobdartist Sorry for the late reply, I was on a trip over the past week and so I am just now able to respond! If it is playing your animation correctly to turn on, but not off, you'll want to go and double check that the things you are animating in your off animation are not yellow. If they are yellow then that means that they cannot be found in the hierarchy, which might have happened when you moved things to where your nose twitch is in the hierarchy. Let me know if ya need more help and I'd be glad to!
Can you narrow down what part isn't working? Is the receiver changing the parameter value when making contact? If it is, then do you have your FX layer in your controller in your animator component in the inspector so that the animations play when running play mode?
@@auxiefox Oh, that is really odd. I've encountered one other person that has had this same issue and we were not able to figure out the cause. If it works in game that's what matters at the end of the day, but it not working in unity is extremely odd and it should definitely be testable in unity.
Whenever I put my FX controller into the animator and switch to play mode, my avatars hair and almost all other toggles toggle off. Also my avatars face gets stuck on the boop animation when I test it. Any idea how to fix that?
Alright, I got in VR and someone booped my nose me and it worked somehow. However, now my problem is that whenever someone does that, my face doesn't change until I do a different gesture, any idea about that?
You'll want to follow Cam's video that is linked in the description to properly set up a reset layer that will prevent your face animations from getting stuck when you do gestures and such if you are using Write Defaults off like I do in the video.
I have a similar problem, The workaround that has worked for me for testing, was to turn the VRC contact receiver OFF, just uncheck the check mark, then when you enter play mode, check it again. I'm not sure why it does this or if it still works ingame but it's the only way I can test things. oh. and don't forget to turn it back on before you upload. :3
Eclipse's suggestion might work as I've had to do that before to test things. Another thing to check is if your sender is on your avatar's base that you are wanting to test with. I've noticed that interactions in unity can be a bit buggy sometimes if your test sender isn't on your avatar in the hierarchy.
@@ivy_vr640 You'll want to make sure that your FX controller is in your Avatar Controller in the animator component when testing and you'll also want to make sure that your parameter that your receiver is supposed to be changing is named exactly the same thing in your FX parameter list.
You'll have to make your own empty clip! It is an animation where you record something (anything at all) and then click on the object's name in the recorded animation and press F2 to rename it and you will want to rename it to something that doesn't exist (like "Null" or something of the sort). If you did it correctly then the name under the recorded animation will turn yellow!
To everyone experiencing problem testing this, as said in the comments you have to place the FX controller into the animator component of the avatar
But ALSO put the culling mode to ALWAYS ANIMATE, it wasn't working for me in play mode until I did this, and it wasn't like that by default
Hope that helps
Yeah, I have had a lot of people not know how to test things in Unity which I didn't think to mention when I made this video! It's definitely something I try and mention in newer ones though! Thanks!
i dont get how you do this
@@boblong8149 What part exactly do ya not understand?
Where do you set the culling mode exactly ?
@@daniiltrusov1701 In the animator component of your avatar, it should be there by default normally
THANK YOU AHH!!!!! it all worked perfectly!
some throubleshooting if youre new to unity like me,
1. if you can't hear the audio of the boop in play mode, move your main camera closer to your avatar and inside the circle of the audio source
2. make sure the sound on and off keyframe animations dont start too late or end too soon for your audios duration
3. if you want larger particles ( I wanted bigger hearts), go under renderer in the particle system and change the min/max particle size !
I'm glad that it worked for ya! And yes, those are good tips for people that might have issues with those things! I'm going to be making a tips and tricks video for keybinds and navigating through Unity soon so that it's easier for people to know about some of these things since it can be a daunting program to start with.
The keyframe animations tip is especially important for the audio clip though so that it can play the full sound!
Thanks for including that Write defaults off link in your description, I was having huge issues with this nose boop thing until I followed that one
No problem! I am likely going to do a tutorial series on avatar 3.0 in general to help people out! Glad that cam's video helped!
This tutorial is awesome, been using the other ones to attempt having a held object go between 2 different constraints and using the senders/recivers to make it all automatic. Goal is to have a joint that can switch between my mouth and hand just by putting it in the right area and using a gesture
Sounds awesome! I am polishing up my lightsaber at the moment (does exactly what you described) and then I will likely make a tutorial either explaining that or a different object that I've made so people can have a better understanding of moving objects around and in world space with parent constraints.
@@Wolfy527 Awesome cant wait for the vid! I got it mostly working only issue is that it works on my end in vrc but sometimes the switch from one position to the other does not happen on other peoples end.
@@deweydonovan9926 That actually has to do with networking by making the float a bool and putting that in your expressions parameter list. I made a video explaining that as well ^.^ hopefully it can help ya solve that problem!
@@Wolfy527 Tried following the instructions given however the bullet network sync layer didnt help me much and when using play mode I could never get the VRC avatar parameter driver to output a checkbox when in game mode.
@@deweydonovan9926 unfortunately parameter drivers dont actually work in unity themselves when play testing, but they do in game. If you want to know if the bool itself works with you animations just toggle the bool on/off along with any other conditions you have set to trigger your animations to play.
hey! i was just curious what the difference between the constant/proximity option on the receiver was.. i was using it for my avatar and it didnt seem to work :)
This video help me a lot, thank you very much!!
Glad that you liked the video! And yes, you will want to make your animation that you recorded to toggle your audio source on the same length as your audio clip, i.e. if it is .5 seconds long, then make sure that there is a second keyframe that is toggling the audio source on at .5 seconds into that animation. You'll then want to make sure that in your animator, the exiting transition from your on animation to your off animtion has "Exit Time" set to 1 so that it will play through that entire animation once before it leaves it!
@@Wolfy527 Thanks u so much! I will try it!
When I do as the tutorial tells me to do, I have something strange happening;
The new animations do not override my currently playing animations, they add on to them. When my avi is already smiling, and the boop makes her smile, she gets this admittedly funny cartoonesque super grin, but I would like it if that did not happen. :') Is there a way to make it cancel out all other facial animations before applying the boop one?
for some reason in unity I'm not getting the spheres when i try to make a sender or receiver, does anyone know why?
Sorry for the late response! You'll want to make sure that you have gizmos on. It's a button towards the top right of your scene tab.
I'm having an issue where my boop animation does not overwrite the facial expressions, just combines the two, what to doooo?
You'll want to make sure that your layer that does the face expression when you are nosebooped is below your face expressions layer that you do with hand gestures and you will also want to make sure that your reset layer is looping properly in a layer above your hand gesture and noseboop layers.
@@Wolfy527 Ok so this is the order I have them in: All Parts > Reset > Hand Left > Hand Right > Nose Boop
aaand not working
@@uwabami6630 Are you using Write Defaults on or off? If you toggled them off, then you'll want to make sure you've followed through Cam's video in the description to make sure your face layers reset fine before adding the boop effect.
If the boop effect itself just isn't triggering then you'll want to make sure your receiver is going off properly to trigger the animation in that separate layer.
@@Wolfy527 have them off, followed cam’s vid and everything but something is still not right maybe it’s just unity being unity and it will work if i reimport into a different project idk anymore
@@Wolfy527 like the boop by itself works well and facial anims by themselves work well just the boop doesn’t owerwrite the facial expressions
the face is working, but the particles arent, idk why.
You'll want to make sure that the timing on the particle systems are lining up properly with your animation length, otherwise the animation may not be long enough to allow for the particles to emit properly.
Ok so uh... I'm a total noob at this
I've set up both the sender and receiver, they work, but the 'boop' parameter in the animator tab doesn't change...
idk what i'm doing wrong
You'll want to make sure that your FX Controller is in your "Animator Component" on your avatar's base when you click it. If it is in there then you'll also want to make sure that the parameter name on your receiver is exactly the same name in your parameter list in your FX Controller and that your animations are using that parameter's value to changed between animations (i.e. the transition conditions are using that parameter to know when to go between animations).
@@Wolfy527 OK, I'll check that when I will have the time
thanks 👍
@@bassrecord6139 No problem! If ya need any more help just let me know!
When I boop myself in Unity, everything works fine. But when I or others try to boop my nose, nothing happen - no face expression or Sound (I don't wanted to add particles). Can someone help me?
You'll want to make sure that the receiver is setup to receive from fingers/hands, not a custom tag. That is my initial guess as to why it works in unity, but not in-game! Let me know if ya still need help!
Does anyone know why the 'boop expression' gets stuck after the sender has left the connector? My avatar doesn't go back to its default expression
Sorry for the delayed response! Just got back from a trip and can respond to questions now!
What is happening is that you likely turned "Write Defaults" off when your avatar is not set up to properly to be used without Write Defaults. If you search up cam's write defaults explanation video (I also have a video that demonstrates setting up face expressions without using write defaults and it also links to cam's video if you want to go there) that will give you a better explanation as to why the face expression gets stuck and how to fix it!
underated and helpful
Thank ya! Really happy that the video was helpful for ya!
You can use transition-duration on the transition out of Boop particles/sound/expression(face), as well as Idle for empty spaces and less lag. I wish I could show you with pictures, but here:
Entry->Idle(0 exit/0 transition)->BoopFace(0 exit/0 transition)->Idle & Entry->Idle(0 exit/0 transition)->BoopParticles(1 exittime/0 transition)->Idle & Entry->Idle(0 exit/0 transition)->BoopSound(1 exit/9 transition%). I put long transition depending on how long I want the cooldown to be, and to give time for my slow falling boop particles to dissipate.
All in all you get the same output with less demand and ticks. You can do a similar thing with hand gestures and Idle, e.g: Entry->Idle(GestureL Equals 4 @ 0.1 Transition duration)->PeaceGestureSMILE(GestureL NotEqual 4 @ 0.1 Transition duration)->Idle
This can be done for each. Less ticks, less lag, and a lot more versatility in gesture combinations.
MAKE SURE YOU USE EITHER ONLY "Write Defaults" ON OR OFF ON ALL LAYERS. I recommend ticked ON with all of them, that way gestures reset automatically.
If you did it this way then you would want to use an "OnEnter" and not a "Constant" receiver. But if you end up needing/using a "Constant" then you'll want a buffer so that your animation doesn't keep looping in and out when someone holds their finger there. It forces them to pull their finger away before they can trigger it again.
To be fair I would probably set this up a bit differently now than I did before, but running your layers like this is not going to cause any extreme amounts of lag or cause a noticeable difference in performance for people. But the way you have yours set up does use fewer ticks and would technically cause less lag in an extreme scenario.
does anyone know how to create a toggle to turn off the boop if you dont want people to do it but turn it on when you want to be booped?
You can create a toggle for the receiver gameobject. That way you can turn that gameobject on and off in your menu, which will end up turning on or off the noseboop as well.
Im having an issue that i cant seem to fix. The animation i made for head patting my avatar closes her eyes. I wanted her eyes to slowly close when someone pats her. When her eyes are closed already because of an expression, she opens her eyes and slowly closes them again when patted. I don't know how to fix this issue ;--;
I think if you make the animation for your head pat just one keyframe and then set a like .25 (default) transition time into the animation, then if your eyes are already close, they should stay close, but if they are open, then they'll transition smoothly into the closing eyes. I presume that you have this animation playing in a new layer that isn't a part of your expressions layer with your hands (you'll also want to make sure it's in a layer below your hand expressions layer so it can override them).
well when i add a contact reciver it doesnt give me a value...like the tab doesnt exist?
They actually took out values! So it is either 1 or 0 now (i.e. true or false for bools). So it defaults to 0 (i.e. false for a bool) and is set to 1 when contact is made (i.e. true for a bool).
heyy everything works, except when I enter playmode my sounds start playing immediately in vrc when I load in too, is there any way to fix that?
If your animation to toggle your sound on and off toggled the game object, then you'll want to make sure that your gameobject is off in your hierarchy by default. If you just toggled your audio source on and off in your animation for the sound, then make sure your audio source is off by default in your hierarchy. That should fix the problem for ya I believe!
So i did what you said but my avatar is broken where its stuck in like the motorcycle pose :/ i tried a tutorial to fix it but didnt work
The only way it fixes if i change the controller to T POS
Ah yeah there's a couple ways to get stuck in bicycle pose if you don't stop recording/previewing once you finish recording animations.
If you have Pumpkin's Avatar Tools you can use the pose editor to reset your avatar back into TPose.
In playtest mode on unity, the boop works perfectly fine
However, when I go ingame to double check and see if it's working, the boop face is *always* on and other gestures move the face around but don't reset it back to the normal face
I linked a video in the description that teaches people how to turn write defaults off properly on their avatar and not break things. It should help you resolve your issue with your face gestures sticking when you use them!
@@Wolfy527 followed the video and got everything to work inside of unity. however, when I load the avatar (or even reset it) the boop anim still plays even though there is nobody else in the world
all of the gestures play over the boop face and all of my toggleable accessories work perfectly fine
edit: booped myself ingame, which continued playing the boop animation, and then moving my finger turned off the animation
do you know how I get it to stop playing when the avatar is loaded and *only* start when someone boops?
@@BetaProtogen What you'll want to do is create a buffer animation that doesn't play anything (presuming you're using a constant receiver) that your animation goes in to when your boop while your boop is true. I.e. you go from boop off --> boop on --> boop buffer --> boop off (for this last one have it transition into boop off when your boop parameter is false). Also to make sure that your boop doesn't play when you load in, just make sure that your particle system is toggle off by default so it doesn't load in as on by default.
@@Wolfy527 just clarifying because I am a little confused, should the hierarchy be
Any State > Boop
Any State > Off
Off > Boop > Buffer > Off?
And what arrows should I set to greater or less than?
also I am just using an animation, I am not using any particles or sounds
@@BetaProtogen Oh if you're just using an animation then just make sure your boop layer is lower than your face gestures layer and just have it go from an empty clip (not any state) to your animation that you want to play when boop is true. (Use a bool, not a float. Bools weren't available for contacts at the time of making this video so I didn't use one.) When boop is true have it go into your face animation, when it goes back to false have it go back to an empty state. Make the empty state your default state as well.
Heyo! I dunno why but my animation works just fine in unity but back in vrchat nothing seems to work. Do you perhaps know why this is happening?
I would start by checking that you have the parameters for the boop in your parameter expression list that goes in game and then I would also make sure that your receiver interacts with fingers/hands incase you might have been testing it with a custom tag while in unity.
Question:
In the "playmode" (idk the right name) of unity...
If I try to change parameters via sender... or if I change parameters (for example the facial ones) nothing happens... D:
(The facial ones work 100% - I tested them ingame.)
Where/what's the problem? D:
What you'll want to do is make sure that your FX Controller is placed in your animator controller. The animator component is located in the inspector on the right when you click your avatar's base in the hierarchy. Once that is in there you should be able to test things in play mode by changing parameters and using the contact system.
It broke my face animtions when i turned off write defaults. do you know a fix to that?
In the description I included a video for how to turn write defaults off properly, although you should be alright to leave them on if your avatar uses them on by default.
So i followed this to do a head pat version. i have my ears rotate and those wont come back up when i move the Contact Sender away. i have the fix for write defaults, is there something special for transforms? ( i do have the physbone components to is animate as well)
nevermind! i figured it out :)
Glad ya got it figured out! Sorry for being slow on the reply!
it doesnt work...the sender isnt interacting with the receiver at all...
You will want to make sure that your FX controller is in your animator controller component in the inspector when you click your avatar's base. That will probably fix your problem. Also make sure your sender you are testing with is on your avatar's base, otherwise it can sometimes glitch out and not trigger the receiver to change the parameter's value.
Hi, thanks for the video but I can't seem to get it working myself! I have my FX controller into my animator on the avatar and I set culling to always animate, but it doesn't seem to react at all to the sender, anything that I might've missed?
Nevermind! I was just having a issue on my side! turns out you need to put the FX controller in before going into play mode. Thank you very much for the tutorial!!
Glad you got it all sorted out!
im having an issues where when i try to boop, its just spamming the particle really fast and doesnt play the anim without you moving ur finger
If you use an OnEnter, then the spamming shouldn't happen (make sure looping is off in the particle system). If you use a constant receiver then you'll want to make sure looping is off on the particle system and that you create a buffer animation in your layer to capture your animation and wait until someone's finger leaves the receiver before it resets.
I.e. Boop off --> Boop On --> Boop On Buffer --> Boop Off.
From Boop Off to Boop On you just have the condition be your boop parameter being on. From Boop On to Boop On Buffer you just have Exit Time = 1 and no other conditions. From Boop On Buffer to Boop Off you have the boop parameter must be false so that when they take their hand away, then it will reset the particle system and allow it to turn back on.
can't create an empty clip, when I turn the gameobject off it does nothing to the animation :/
You have to click the record button for the animation so that it will capture the toggle in the animation. Then you just change the name of the game object to something that doesn't exist by clicking it in the animation and pressing "F2" and then renaming it so it turns yellow.
in unity, everything works perfectly, but in game, other players have a delay before anything is triggered once its in the receivers zone. i have all of the transitions time set to 0 and nothing that i can find in the layer is giving it any delay. It is instant in unity playtest and in game for my client, but everyone else has a noticeable delay before it gets triggered, like they have to hold their finger in place for half a second.
That is likely because of having it set to local only instead of turning that off. If you want the nose boop itself to be more responsive for others (although it might not go off for you sometimes even if it goes off for others), then you coudl turn off the local only option on the receivers and allow for the animation to play whenever someone else sees themselves interact with it, opposed to the animation playing when YOU the local player see them interact with your nose.
@@Wolfy527 local only is disabled and still haven't found a fix. I think its just the way my avatars fx layer was setup. Weirdly enough. I got it to where its instantaneous if others watch me boop myself and its instant locally. But if someone boops me, its delayed by about half a second.
@@Kawachi69 Yeah that is likely just due to latency between you and them to be honest. Other than that, you'd just want to make sure that nothing is running based off of "local only"
I'm having issues getting mine to work, i believe i set up everything correctly but when i go to test it it doesn't react to the sender
Do you have your FX controller in your animator controller component in the inspector?
idk how to get this working with the proximity reciever :(
Personally, I would use a constant or on enter contact receiver now as these didn't exist when i initially made the nose boop effect for the avatar.
@@Wolfy527 I'll look into how the rexouium does it with its boop receiver, that one does it really well and im curious what they had to do
@@saikopsychiatry Sounds good! I need to make a more concise and updated version for making a nose boop, so that is something I will look into!
i need some help with this, i did an animation for my character that closes its eyes and he gets blushed, it works fine in the play mode on Unity but when i go in game the eyes don't close but the blushing works..
If you created a separate layer for your nose boop affect, then you'll want to make sure that layer is below your hand expressions layer so that it can override that layer with your animations in the nose boop layer.
Can you provide the "1 second empty clip" ? I have an empty clip provided by a package, but it barely does anything, the particles just disappears as soon as my nose isnt touched.
what you would want to do is make your animation for playing the particles however long your particle lifetime is. I.e. if you have them play for .75 seconds, then make your animation that toggles them on .75 seconds long. You'll also want the transition out of the state that turns the particles on to have "Exit Time" that is set to 1, so it will play that entire animation before it exits out of it and turns them back off.
hello,i really need help,i tried all day
During playback, when my transmitter touches the receiver, the display changes from 0 to 1, which means the setting is correct and there is a trigger
But my FX is always on the preset animation and won't turn on the NOSE animation due to the trigger
I have tried setting BOOL float Int but nothing happens🥲🥲
Hmm, do you have your FX layer in your animator controller component in the inspector? That might fix your problem if animations aren't playing on your avatar when trying to test.
the face and sound is stuck....
If they're stuck in the animation to play the face and sound then you'll want to make sure that your transition back to turn it off is set up correctly so that it can transition back.
If your face is stuck and you are following with WD off, I'd encourage you to watch Cam's video about WD being turned off as well as I have a video showing generally how to set up your face gestures with WD off. If you want to just use WD on, that is fine as well!
I've tried this several different ways and very way gets me the same result.
In order to see anything occur, I have to put the FX controller into the Animator script. In game, nothing works. But the sender interacts with the receiver because the parameter value changes to 1. I'm so confused.
Do you have your FX controller in your FX Layer in the avatar descriptor as well? Under "Base Layers" at 2:00 you can see my FX controller also in my FX base layer in my avatar controller half way down the screen on the right side.
What about in situation where you have HAI 's combo gestures. I'm getting to issue where setting up my facial animations and then trigging them will not revert the face back to what is was before. It just gets stuck.
I believe HAI's combo gestures actually has the ability to select using write defaults off when setting it up. I'm not sure if it will let you convert a system you're currently using over to write defaults off though.
does the boop effect work for quest as well?
It would work fine for the face animation and ear movement, but sounds aren't allowed on quest and particles are quite limited on quest.
How would you go about making this toggleable (for when you just don't want it on)? I gave it 4 different approaches but none seemed to actually work
I believe the easiest way to make this toggleable would be to toggle the game object that has the noseboop receiver on it on and off. I.e. you can just make a normal menu toggle that is on and off and have that toggle your noseboop receiver on and off.
is there anyway to make these a toggle in the expression menu? Like say that you want to turn off the ability for someone to boop you in your own expression menu. besides turning off avatar contacts in setting on vrc?
What you could do is just make a boolean that has to be true (along with the other conditions already shown in the video). That way, if you turn that boolean off in the menu as a normal toggle, then it won't allow the boop animation to play because the boolean being true is also required in the transition conditions along with the contact receiver needing to be interacted with by a hand or finger.
@@Wolfy527 would that work for other contacts aswell? Or solely for the boop?
@@Wolfy527 and another thing a friend has pointed out, is that my nose boop sound doesnt play out completely or quick whenever they do a quick boop only the particles go fast. You have to hold the finger there for a second then it will play. Is there a way to fix that?
@@kagaminetwins1851 It would work fine with other contacts as well!
@@kagaminetwins1851 If your sound doesn't play completely, make sure that the animation for turning on the sound is the same length as the audio clip. I.e. if the autio clip is a second and a half, then you'll want your animation to go to 1:30 in the animation tab. You'll also want to make sure that the transition FROM your animation that plays your sound has exit time set to 1 so that it plays the entire sound clip and then transitions out of it!
this is going so fast i gotta turn the playback speed to slow
Hah yeah I do have to go through thing a bit quickly. Depending on someone's familiarity with unity it might be a bit quick. The video would have been extremely long (already 26 minutes) if I had gone slower though.
Just doesnt work no matter how much I try, putting the FX into the controller is killing my avatar. P.S. when I press play mode only my base layer is on full blue line.
What do you mean by "killing your avatar" exactly?
I followed the tutorial closely but for some reason when i tested the animation of what should be done when i get booped didn't reset TvT
If you aren't normally using write defaults off with your avatar then you can follow Cam's youtube tutorial on how to set your avatar up with write defaults off. This setup should technically work with write defaults on, but the animations themselves might need to be modified a bit.
Ah alr ty
@@pinkwolfgalaxy4055 If you follow cam's video or really can't get things figured out just message me on discord (Wolfy#2727) and I can see if I can help ya out!
Well, update just dropped, i can't seem to get the receiver to work correctly, it won't tick the float paramater to 1,
You'll want to make sure the sender that you're using to test is on your avatar in unity and that the parameters are named the exact same thing. You'll also want to make sure your FX layer is in your controller in the animator component in the inspector so that you can test things on your avatar in play mode. Also, you can use bools now instead of floats if you want!
@@Wolfy527 Thanks alot! i previously didn't have an animator controller,
@@carbon8044 that has happened to me before as well, glad that fixed the issue!
Hey mate, I followed the tutorial up to the animation place so far, and somehow I got it that the default expressions of my model has become a blep, instead of only blepping when booped.
Any idea how this happened or to fix?
From what I can tell, it seems like the blep expression doesn't get reset to the default state.
If you ended up turning write defaults off to follow this tutorial, I linked a video in the description that teaches you how to set up your avatar expressions so that they work with write defaults off. If that doesn't seem to be the problem though, then just let me know and I can see if something else is wrong!
@@Wolfy527 I followed all the steps in Cam's video, but unfortunately my issue still persists.
@@DoomDutch Hmm. So you have your default state in the boop layer as an empty clip, and only go to the blep animation when boop is true and then return back to the empty state when boop is false right? And this layer is below your face expressions layers and your reset layer?
@@Wolfy527 Right now from my 'Any State' it goes to 'Empty Clip' when 'Boop = less than 0.5' & from 'Any State' to 'Blep' when 'Boop = Greater than 0.05'.
When the Game State is playing, it does show that the 'Empty Clip' is running in the Nose Boop Layer, but in the scene it's still blepping.
And yes, my Nose Boop Layer is all the way down the list of all layers.
Does he need to buy a new BOOP plug-in?
Sorry, I don't think I understand the question.
Dead confused bro, I've followed several guides and for some reason the reciever's value wont go over 0 with the sender colliding with it.
You will want to make sure that your FX controller is in your animator controller component in the inspector when you click your avatar's base. That will probably fix your problem.
I have the impression that I have no sound on my unit, what do I do?
You'll want to make sure that your camera has an audio listener component on it and also when you go into play mode there is a toggle towards the top that is labeled "Mute Audio." You'll want to make sure that the toggle isn't turned on as well in order to hear things in play mode.
How are you able to hear the sounds in playmode?
There is a button in "Game" or "Playmode" in the top right of the game window that has "Mute Audio". That might be checked which won't allow you to hear what's happening when you test things.
@@Wolfy527 I've just tried and it was unchecked. I'm not sure what im missing, it wont play any audio at all in play mode for me.
@@TruExFlame Do you have an audio listener on your main camera in your scene and is it turned on as well?
@@Wolfy527 Alright that worked, didn't actually even have a camera in scene. But now I have a new issue, where you see how the blue bars move on the bottom of the states to show that the object is responding in play mode, for some reason the bar only goes max 1/5 the way. I'm still trying to make the slap work, it works and plays the sound fine when I set the receiver to "Constant" like you had in the video but when I have it set to "On Enter" which I want so that the slap sound only plays when I swing at someone at a certain velocity, it just goes 1/5 on the bar and never gets to play the sound.
@@TruExFlame Are you using the float to drive the motion time of the animation instead of using it as a transition condition?
I am trying to use this as a guide for placing punching sound effects on my avatar, but I have no clue. It’s not working.
How exactly are ya setting it up/wanting it to work?
@@Wolfy527 so, when ever I punch someone, it would make a punching sound effect. I got it working so that when my hand (receiver which is on my wrist bone) came in constant with a head/torso, it would make the effect.
@@Wolfy527 I put the audio clip on the wrist and the script too. It did work in the play mode in unity however it said it couldn’t find the animator controller parameter I made.
@@Wolfy527 I also tried making it so I could toggle it… also is it in the FX you should creat it. I have never made avatars before, so this is my first one.
@@Wolfy527 when I went into VRChat it didn’t work
i did everything in the video exactly down to the point and its not working at all
Let's narrow down what isn't working! Do your receivers/senders properly interact with one another and update the parameter value in your FX layer?
@@Wolfy527 God im stupid haha
@@cinnythedeer8067 Nah I've done that before and I've had a lot of other people ask about it as well! Glad that fixed your issue, it's a learning process haha!
ugghh im still having troubles it still refuses to work
What part isn't working specifically?
so i tried this and nothing on my avatar works anymore..
Hmm, you grabbed the newest SDK from the website correct? If so, do you have errors in your console that could be preventing you from going into play mode or causing things to not work?
Do you have any idea why my animations get stuck, as in it plays my Happy animation but doesn't revert back, as soon as the Sender touches the Receiver?
Are you using write defaults off? If so, did you check out cam's video that runs through how to set that up so that your face doesn't get stuck?
@@Wolfy527 Wow, thanks for the very quick response! I made sure that I put the write defaults off, just like you did in the video. I only rushed through his video, but I will make sure to go through that one first and then come back to yours. Cheers!
@@Toubsh No problem! I highly suggest watching Cam's video so that write defaults off makes sense for people. You can technically do this with them on, but I make sure people know that I personally use them off and make these tutorials with the thought in mind that they will work with write defaults off and should work even with them on, although it isn't a guarantee.
@@Wolfy527 I went through with his tutorial and the boop works now! But the problem is that I have issues with my toggles now, like my hoodie and shorts activate but I can't unequip them anymore, my ears don't move anymore when I do certain hand gestures, I made the boop work but a lot of the other stuff not work anymore :/
@@Toubsh So the thing with write defaults is that you technically wouldn't need an animation to toggle objects off when you wanted them off because of the nature of write defaults being on. With them off, you would have to make an animation that toggles off your different pieces of clothing and such and a transition that runs to it when "X" is toggled off. Your ears I'm not entirely sure about though. If you want to try creating the boop effect with write defaults on, I believe you would just need an empty state running to a "boop on" animation and then back to the empty state after it plays through the entire boop animation and it will automatically toggle itself off.
There's a lot of positives and negatives to using write defaults on/off and it just kind of depends on what people want when they do things. The upside of write defaults off is that an object or toggle would stay on when you switch between different animations in a layer. I.e. if you toggled on a shirt with write defaults off, you could have it run to another animation in that same layer and it wouldn't automatically toggle it off. If you did this with write defaults on, as soon as you leave your "Shirt On" animation it will get toggled off.
Sorry for the long winded response, just trying to make sure you know the difference between the two and what they let you do!
i give up. this is the third video ive tried.
What seems to be the problem?
@@Wolfy527 at first it wouldn't play the animation but when I moved it to where rezollo has his nose twitch in the hierarchy it started playing the animation but doesn't exit
I had everything one to one like how it was In your video. The only difference is I use the Rexouium
@@jacobdartist Sorry for the late reply, I was on a trip over the past week and so I am just now able to respond!
If it is playing your animation correctly to turn on, but not off, you'll want to go and double check that the things you are animating in your off animation are not yellow. If they are yellow then that means that they cannot be found in the hierarchy, which might have happened when you moved things to where your nose twitch is in the hierarchy. Let me know if ya need more help and I'd be glad to!
testing it in unity wont work for me
Can you narrow down what part isn't working? Is the receiver changing the parameter value when making contact? If it is, then do you have your FX layer in your controller in your animator component in the inspector so that the animations play when running play mode?
@@Wolfy527 no, no values are changing. i test it in vrchat itself and it works just fine but i see no change in values when testing in unity
@@auxiefox Oh, that is really odd. I've encountered one other person that has had this same issue and we were not able to figure out the cause. If it works in game that's what matters at the end of the day, but it not working in unity is extremely odd and it should definitely be testable in unity.
Whenever I put my FX controller into the animator and switch to play mode, my avatars hair and almost all other toggles toggle off. Also my avatars face gets stuck on the boop animation when I test it. Any idea how to fix that?
Alright, I got in VR and someone booped my nose me and it worked somehow. However, now my problem is that whenever someone does that, my face doesn't change until I do a different gesture, any idea about that?
You'll want to follow Cam's video that is linked in the description to properly set up a reset layer that will prevent your face animations from getting stuck when you do gestures and such if you are using Write Defaults off like I do in the video.
when i contact the sender and reciver it doesnt show that the reciver cas anything colliding but they have the same collison the finger
and my fx is in my animator controller
I have a similar problem, The workaround that has worked for me for testing, was to turn the VRC contact receiver OFF, just uncheck the check mark, then when you enter play mode, check it again. I'm not sure why it does this or if it still works ingame but it's the only way I can test things. oh. and don't forget to turn it back on before you upload. :3
Eclipse's suggestion might work as I've had to do that before to test things. Another thing to check is if your sender is on your avatar's base that you are wanting to test with. I've noticed that interactions in unity can be a bit buggy sometimes if your test sender isn't on your avatar in the hierarchy.
@@Wolfy527 hey im back and now im having the issues where the value is changing but its not triggering the paramature
@@ivy_vr640 You'll want to make sure that your FX controller is in your Avatar Controller in the animator component when testing and you'll also want to make sure that your parameter that your receiver is supposed to be changing is named exactly the same thing in your FX parameter list.
Empty clip not found what
You'll have to make your own empty clip! It is an animation where you record something (anything at all) and then click on the object's name in the recorded animation and press F2 to rename it and you will want to rename it to something that doesn't exist (like "Null" or something of the sort). If you did it correctly then the name under the recorded animation will turn yellow!