protected IEnumerator TrackHit(SingleLaserHit hit, ArcReactor_Launcher launcher) { while (hit.hitLastFrame || hit.hitThisFrame) { yield return(new WaitForEndOfFrame()); hit.hitLastFrame = hit.hitThisFrame; hit.hitThisFrame = false; } DoHitEnd(hit, launcher); }
public void DoHitStart(ArcReactorHitInfo hit) { //Update the hit position of the particle effect SingleLaserHit newHit = new SingleLaserHit(); newHit.particles = GameObject.Instantiate <ParticleSystem> (hitParticles); newHit.particles.transform.position = hit.raycastHit.point; newHit.particles.transform.LookAt(hit.raycastHit.point + hit.raycastHit.normal); newHit.hitThisFrame = true; allLaserHits.Add(hit.launcher, newHit); StartCoroutine(TrackHit(newHit, hit.launcher)); }
public void DoHitEnd(SingleLaserHit hit, ArcReactor_Launcher launcher) { hit.particles.enableEmission = false; hit.particles.gameObject.SetActive(false); allLaserHits.Remove(launcher); }
private void DoHitContinue(SingleLaserHit existingHit, ArcReactorHitInfo hit) { existingHit.particles.transform.position = hit.raycastHit.point; existingHit.particles.transform.LookAt(hit.raycastHit.point + hit.raycastHit.normal); existingHit.hitThisFrame = true; }