예제 #1
0
 void OnMegaTyphoonActivatedEvent(MegaTyphoonActivatedEvent e)
 {
     if (!activated)
     {
         tracking         = true;
         telescopeElement = e.element;
     }
 }
예제 #2
0
    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;
    }