Hi,
I got a very low framerate with the following trigger.
I tried to don’t use OnTriggerStay, but th result is the same.
I use it on two object with 20 colliders each.
When the objects are outside eachother everything is ok, but when they start to enter their trigger the framerate fall.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class ShieldMesh : MonoBehaviour {
public float regenBonus = 10.0f;
public float shieldBonus = 10.0f;
private int shipID;
private List<SpaceShip> m_Targets = new List<SpaceShip>();
private bool isTriggered = false;
public void Start()
{
shipID = gameObject.GetInstanceID();
}
public void OnTriggerEnter(Collider collider){
if (collider.gameObject.GetInstanceID() != shipID)
{
SpaceShip ship = collider.gameObject.GetComponent<SpaceShip>();
if (ship) {
m_Targets.Add(ship);
if (!isTriggered)
StartCoroutine("DegenerateTargets");
isTriggered = true;
}
}
}
public void OnTriggerExit(Collider collider)
{
if (collider.gameObject.GetInstanceID() != shipID)
{
SpaceShip ship = collider.gameObject.GetComponent<SpaceShip>();
if (ship) {
m_Targets.Remove(ship);
if (m_Targets.Count <= 0)
{
StopCoroutine("DegenerateTargets");
isTriggered = false;
}
}
}
}
private IEnumerator DegenerateTargets()
{
foreach (SpaceShip ship in m_Targets)
{
ship.Energy -= 5;
yield return new WaitForSeconds(1.0f);
}
}
}