void OnMegaTyphoonActivatedEvent(MegaTyphoonActivatedEvent e) { if (!activated) { tracking = true; telescopeElement = e.element; } }
void AddElementToPanorama(MapElement element, Vector3 target) { // Create first telescope element GameObject telescopeElementObject1 = new GameObject(element.name); SpriteRenderer spriteRenderer = telescopeElementObject1.AddComponent <SpriteRenderer>(); spriteRenderer.sprite = element.elementSprite; spriteRenderer.maskInteraction = SpriteMaskInteraction.VisibleInsideMask; BoxCollider collider = telescopeElementObject1.AddComponent <BoxCollider>(); collider.isTrigger = true; if (element.layer == ELayer.HORIZON) { spriteRenderer.sortingOrder = 3; } else { spriteRenderer.sortingOrder = 6; } telescopeElementObject1.transform.parent = layers[(int)element.layer].children[0]; telescopeElementObject1.transform.rotation = Quaternion.Euler(90, 0, 0); telescopeElementObject1.transform.localScale = new Vector3(1, 1, 1); TelescopeElement telescopeElement1 = telescopeElementObject1.AddComponent <TelescopeElement>(); telescopeElement1.elementDiscover = element; telescopeElement1.triggerActive = !element.visible; telescopeElement1.needZoom = element.needZoom; telescopeElement1.needSight = element.needSight; telescopeElement1.needSuperPrecision = element.needSuperPrecision; if (element.clueOneShot) { if (!element.clueAlreadyPlayed) { telescopeElement1.playClue = true; element.clueAlreadyPlayed = true; } else { telescopeElement1.playClue = false; } } else { telescopeElement1.playClue = element.playClue; } // Clone it GameObject telescopeElementObject2 = Instantiate(telescopeElementObject1, layers[(int)element.layer].children[1]); // Place them on telescope in 0-360° if (target == Vector3.zero) { target = boat.transform.position; } float angle = Angle360(-boat.transform.up, element.transform.position - target, boat.transform.right); angle = 360 - angle; float layerWidth = layers[(int)element.layer].layerSize * layers[(int)element.layer].parallaxSpeed; float offset = angle * (layerWidth / 360f) - (layerWidth / 2f); telescopeElementObject1.transform.localPosition = new Vector3(offset, 0, 0); telescopeElementObject2.transform.localPosition = new Vector3(offset, 0, 0); // Initialize telescope elements TelescopeElement telescopeElement2 = telescopeElementObject2.GetComponent <TelescopeElement>(); telescopeElement1.cloneElement = telescopeElement2; telescopeElement2.cloneElement = telescopeElement1; int elementAngle = Mathf.RoundToInt(angle + 180) % 360; telescopeElement1.startAngle = elementAngle; telescopeElement2.startAngle = elementAngle; int elementCurrentAngle = (elementAngle + boatRotation) % 360; telescopeElement1.angleToBoat = elementCurrentAngle; telescopeElement2.angleToBoat = elementCurrentAngle; telescopeElement1.audio = true; }