- Home /
Enemy frozen in place by light?
I want to make a little game involving enemies that are frozen in place like statues when the player's flashlight touches them, but can move really quickly when no light is touching them. How would I go about doing this? My guess is a series of complicated scripts, but I don't really have much experience with scripting. I'm a programming newb.
Answer by AironeneroTechnologies · Aug 30, 2014 at 08:04 PM
You can use physic rays casted from the your light to the enemies, and if they are in front of the light you set it frozen. http://docs.unity3d.com/ScriptReference/Physics.Raycast.html
Answer by metavoidthedarkassassin · Mar 13, 2020 at 09:17 AM
I would create a set of box colliders inside the light and edit them to be the shape of the light, I would then make them triggers and create a script with an ontriggerenter method where if the enemy triggers it you set the enemies interpolation speed to 0 with a reference to your enemy script. And if they aren't triggering it then set their speed to normal.
I agree, this response is a lot simpler than the other one (the other one allows would probably allow for more control though). To further add to it, you can make a mesh in the shape of a torch beam and then use a mesh collider and hide the mesh renderer if you are being pedantic. One thing that always gets me when I use OnTriggerEnter and OnTriggerExit is that if you deactivate a gameobject after OnTriggerEnter has been called but before OnTriggerExit is called, OnTriggerExit will not be called. You might also want to use OnTriggerStay ins$$anonymous$$d and gradually decrease the speed of the character after it enters over time until they reach 0. Even if it is half a second or less, I think this will look a lot nicer than them suddenly standing still.