mmdem0
6 years agoHonored Guest
OnTriggerEnter() not working in Oculus Go environment?
Hey guys,
I really need help on this. I have tried so many forums to get an answer, and nobody has helped. I have five triggers set up in a scene to call an object to go to a starting position, to follow the player for a certain amount of time, then to move off to an end position. I also have triggers that trigger animations of three separate fish, which are supposed to jump over you. None of these work. I have it all set up correctly according to every forum I've searched. I have rigid bodies, mesh colliders, convex on, I made sure that everything is set up in the physics map to collide, etc. It still won't work. It won't even enter the OnTriggerEnter() function, as I even put in a visual debug code. Here is some example code of what I am doing:
//fish controller
//Bird targets
I really need help on this. I have tried so many forums to get an answer, and nobody has helped. I have five triggers set up in a scene to call an object to go to a starting position, to follow the player for a certain amount of time, then to move off to an end position. I also have triggers that trigger animations of three separate fish, which are supposed to jump over you. None of these work. I have it all set up correctly according to every forum I've searched. I have rigid bodies, mesh colliders, convex on, I made sure that everything is set up in the physics map to collide, etc. It still won't work. It won't even enter the OnTriggerEnter() function, as I even put in a visual debug code. Here is some example code of what I am doing:
//fish controller
public class FishController : MonoBehaviour
{
public Animator fishAnimator1;
public Animator fishAnimator2;
public Animator fishAnimator3;
void Start()
{
fishAnimator1 = GetComponent<Animator>();
fishAnimator2 = GetComponent<Animator>();
fishAnimator3 = GetComponent<Animator>();
}
public void TriggerFishAnimation(int i){
if(i == 1)
{
fishAnimator1.SetTrigger("FishAnimation");
}
if(i == 2)
{
fishAnimator2.SetTrigger("Fish2Animation");
}
if(i == 3)
{
fishAnimator3.SetTrigger("Fish3Animation");
}
}
}
//Bird targets
public class BirdTargets : MonoBehaviour
{
[SerializeField]
AnimatedBird[] birds;
[SerializeField]
Transform startPosition1;
[SerializeField]
Transform startPosition2;
[SerializeField]
Transform playerFollow1;
[SerializeField]
Transform playerFollow2;
[SerializeField]
Transform endPosition1;
[SerializeField]
Transform endPosition2;
void Awake() {
}
public void BirdsToStartPosition()
{
birds[0].SetDestination(startPosition1.position, 10f);
birds[1].SetDestination(startPosition2.position, 10f);
}
public void BirdsToFollowPosition()
{
birds[0].SetDestination(playerFollow1.position, 0.1f);
birds[1].SetDestination(playerFollow2.position, 0.1f);
}
public void BirdsToEndPosition()
{
birds[0].SetDestination(endPosition1.position, 0.05f);
birds[1].SetDestination(endPosition2.position, 0.05f);
}
}
//Animated Birds
//Animated Birds
public class AnimatedBird : MonoBehaviour
{
[SerializeField]
int targetNumber;
[SerializeField]
float smoothSpeed;
DemoMovementRig rig;
Vector3 targetPos;
public Vector3 startingPos {get; private set;}
// Start is called before the first frame update
void Start()
{
rig = FindObjectOfType<DemoMovementRig>();
targetPos = this.transform.position;
}
// Update is called once per frame
void Update()
{
FlyToTarget();
}
void FlyToTarget()
{
transform.LookAt(targetPos);
transform.position = Vector3.Lerp(transform.position, targetPos, smoothSpeed * Time.deltaTime);
}
public void SetSpeed(float f)
{
smoothSpeed = f;
}
public void SetDestination(Vector3 v)
{
targetPos = v;
}
public void SetDestination(Vector3 v, float s)
{
targetPos = v;
smoothSpeed = s;
}
}
//eventcontroller
//demomovementrig
//these do not work
//eventcontroller
public class ZiplineEventsController : MonoBehaviour
{
AnimatedBird[] Birds;
BirdTargets birdTargets;
FishController fishController;
void Awake(){
Birds = FindObjectsOfType<AnimatedBird>();
birdTargets = gameObject.GetComponent<BirdTargets>();
fishController = gameObject.GetComponent<FishController>();
}
public void BirdEvents(string s)
{
if(s.Equals("start"))
{
birdTargets.BirdsToStartPosition();
}
else if(s.Equals("follow"))
{
birdTargets.BirdsToFollowPosition();
}
else if(s.Equals("end"))
{
birdTargets.BirdsToEndPosition();
}
else
{
//used for visual debugging
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.transform.position = new Vector3(-4.31f, 35.47f, 40.97f);
cube.transform.localScale = new Vector3(5.0f, 5.0f, 5.0f);
//Debug.LogError("Bird events broke.");
}
}
public void TriggerFishAnim(int i){
fishController.TriggerFishAnimation(i);
}
}
//demomovementrig
public class DemoMovementRig : MonoBehaviour
{
public Transform startingPostion;
public Transform endingPosition;
ZiplineEventsController zipEvents;
BirdTargets[] birdTargets;
[SerializeField]
float speedModifier;
bool enableMovement = false;
//following four functions all work
void Awake() {
zipEvents = GetComponent<ZiplineEventsController>();
}
void Start()
{
enableMovement = false;
this.transform.LookAt(endingPosition);
}
// Update is called once per frame
void Update()
{
if(enableMovement)
{
TranslateCharacter();
}
}
//draws the line that the user follows
void OnDrawGizmos() {
Gizmos.color = Color.red;
Gizmos.DrawLine(startingPostion.position, endingPosition.position);
}
//these do not work
void OnTriggerEnter(Collider other) {
if(other.gameObject.CompareTag("EndTrigger"))
{
ResetPosition();
}
if(other.gameObject.CompareTag("BirdsStart"))
{
zipEvents.BirdEvents("follow");
}
if(other.gameObject.CompareTag("BirdsStop"))
{
zipEvents.BirdEvents("end");
}
if(other.gameObject.CompareTag("Fish1"))
{
zipEvents.TriggerFishAnim(1);
}
if(other.gameObject.CompareTag("Fish2"))
{
zipEvents.TriggerFishAnim(2);
}
if(other.gameObject.CompareTag("Fish3"))
{
zipEvents.TriggerFishAnim(3);
}
else
{
//used for visual debugging
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.transform.position = new Vector3(-4.31f, 35.47f, 40.97f);
cube.transform.localScale = new Vector3(5.0f, 5.0f, 5.0f);
}//end of else
} // end of on trigger enter
public Vector3 GetBirdTargetPos(int i)
{
if (birdTargets != null)
{
return birdTargets.transform.position;
}
else
{
Debug.LogError("Position not correctly fetched");
return Vector3.zero;
}
}
//other functions in class control buttons, which work but I did not include to save space
}
Please someone help me figure out why this code isn't working I've been staring at it for over two weeks