- Home /
How to trigger a collider to enable after a camera is inside of it.
I'm creating a game where you move around with CAMERA (most people miss the detail). The camera has a look to teleport script and it uses a ray cast to get what collider the user is looking at and if the user presses fire1 they will be teleported to it. The problem with this is that on my tutorial level (it teaches the movement basics) is that I can't switch the scenes to the first level because the collider has to be enabled for the trigger to work. If anyone can help me find the answer to the problem then I will reward you. The teleport to look script is here.
using UnityEngine; using System.Collections;
public class LookTele : MonoBehaviour {
private RaycastHit lastRaycastHit;
public AudioClip audioClip;
// Use this for initialization
void Start () {
Cursor.visible = false;
}
private GameObject GetLookedAtObject(){
Vector3 origin = transform.position;
Vector3 direction = Camera.main.transform.forward;
float range = 1000;
if (Physics.Raycast (origin, direction, out lastRaycastHit, range))
return lastRaycastHit.collider.gameObject;
else
return null;
}
private void TeleportToLookAt(){
transform.position = lastRaycastHit.point + lastRaycastHit.normal * 2;
if (audioClip != null)
AudioSource.PlayClipAtPoint (audioClip, transform.position);
}
// Update is called once per frame
void Update ()
{
if (Input.GetButtonDown ("Fire1"))
if (GetLookedAtObject () != null)
TeleportToLookAt ();
}
}
Answer by Potatobob · Aug 28, 2016 at 03:41 PM
If I understand properly what you want is really simple when you think about it this way:
All colliders can be seen either as a trigger or a collider by checking the variable "IsTrigger" on the collider component of the object.
Thus all you need to do to turn in the collision of that object when the camera is inside of it is to use that object as a trigger in first place. Then you can add a collider to your camera so it gets detected by the object you enter in.
This setup will allow you to know as soon as the camera enter a trigger and you will be able to turn on and off its collision with those:
OnTriggerEnter(Collider other)... (this is used to know when you enter a trigger) OnTriggerExit(Collider other)... (this is used to know when you exit a trigger) I would make a few line on your camera controls code that would look like this(starting with the function OnTrigger enter):
void OnTriggerEnter(Collider other)
{
if (other.name == "your collider name goes here")
{
other.isTrigger = false;//this enables the collision on that object.
}
}
I hope this help you out !