ulvis.paste.net

Paste Search Dynamic
Recent pastes
Loris Carloris 6 unity
  1. using system.Collections;
  2. using system.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5.  
  6. public class Swipe : MonoBehaviour
  7. {
  8.     //movement
  9.     public int magnitude;
  10.     public int speed;
  11.     public int dragResistance;
  12.  
  13.     //slideshow (scorrimento automatico)
  14.     bool slideshow = false;
  15.     public float changeTime = 3.0f;
  16.     float timer = 0;
  17.  
  18.     //panels generation
  19.     private RectTransform canva;
  20.     GameObject panel;
  21.     GameObject handler;
  22.     Sprite[] immagini;
  23.     GameObject[] arrayPagine;
  24.  
  25.     //navigation
  26.     float[] goal;
  27.     bool lerp;
  28.     Vector2 startPosition;
  29.     int page;
  30.  
  31.     //slider
  32.     public GameObject slider;
  33.     bool sliderActive;
  34.     bool lerpSlider;
  35.     public int speedSlider;
  36.     public float sliderFadeTime;
  37.     float timerSlider;
  38.     public float sliderIdlePosition;
  39.     public float sliderActivePosition;
  40.     public int sliderMagnitude;
  41.    
  42.     //lo sa solo Loris a che serve
  43.     bool flag = false;
  44.  
  45.    
  46.    
  47.  
  48.     // Use this for initialization
  49.     void Awake()
  50.     {
  51.         immagini = Resources.LoadAll<Sprite>("ITA/Cap1");
  52.         goal = new float[immagini.Length];
  53.         canva = GameObject.Find("Canvas").GetComponent<RectTransform>();
  54.         arrayPagine = new GameObject[immagini.Length];
  55.  
  56.         page = 0;
  57.         // scale lunghezza delle pagine per scorrimento
  58.         for (int i = 0; i < immagini.Length; i++)
  59.         {
  60.             goal[i] = -i * (canva.localScale.x * canva.rect.width);
  61.         }
  62.         lerp = false;
  63.         lerpSlider = false;
  64.         sliderActive = false;
  65.     }
  66.  
  67.  
  68.     private void Start()
  69.     {
  70.         //setto impostazioni slider
  71.         slider.GetComponent<Slider>().maxValue = immagini.Length-1;
  72.  
  73.         //instanziamento immagini
  74.         panel = GameObject.Find("ImageBase");
  75.         handler = GameObject.Find("Handler");
  76.         arrayPagine[0] = panel;
  77.  
  78.         for (int i = 1; i < immagini.Length; i++)
  79.         {
  80.             GameObject tempImage = (GameObject)Instantiate(panel, handler.transform);
  81.             tempImage.name = "img" + i;
  82.             tempImage.GetComponent<Image>().sprite = immagini[i];
  83.             arrayPagine[i] = tempImage;
  84.         }
  85.         DisableImages(0);
  86.     }
  87.  
  88.     // Update is called once per frame
  89.     void Update()
  90.     {
  91.         //Se non si è in modalità slideshow
  92.         if (!slideshow)
  93.         {
  94.             //controllo in quale fase del touch siamo
  95.             Vector2 touchDelta;
  96.             if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
  97.             {
  98.                 //posizione iniziale
  99.                 startPosition = Input.GetTouch(0).position;
  100.             }
  101.             if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)
  102.             {
  103.                 //drag handler
  104.                 lerp = false;//Non so a cosa serve ma senza dà problemi
  105.                 touchDelta = Input.GetTouch(0).deltaPosition;
  106.                 Vector2 deltaFromStart = Input.GetTouch(0).position - startPosition;
  107.                 float movement = touchDelta.x / dragResistance;
  108.  
  109.                 //non si puo muovere la prima pagina indietro nè l'ultima avanti
  110.                 if ((page == 0 && movement > 0) || (page == goal.Length - 1 && movement < 0) || deltaFromStart.x>=sliderMagnitude)
  111.                 { }
  112.                 else
  113.                 {
  114.                         transform.Translate(movement, 0, 0);
  115.                 }
  116.                    
  117.             }
  118.             if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
  119.             {
  120.                 Vector2 endPosition = Input.GetTouch(0).position;
  121.                 Vector2 deltaPosition = endPosition - startPosition;
  122.                 //il dito si è spostato di almeno <magnitude> pixel
  123.                 if (Mathf.Abs(deltaPosition.x) > magnitude)
  124.                 {
  125.                     if (deltaPosition.x > magnitude)
  126.                     {
  127.                         lerp = true;
  128.                         page--;
  129.                         flag = false;
  130.                     }
  131.                     //This was a flick to the left with magnitude of 5 or more
  132.                     if (deltaPosition.x < -magnitude)
  133.                     {
  134.                         lerp = true;
  135.                         page++;
  136.                         flag = false;
  137.                         //transform.position = new Vector3(Mathf.Lerp(transform.position.x, goal, speed * Time.deltaTime), transform.position.y, transform.position.z);
  138.                     }
  139.                     slider.GetComponent<Slider>().value = page;
  140.                 }
  141.                 else
  142.                 {
  143.                     lerp = true;
  144.  
  145.                     //swipe verso l'alto: appare lo slider
  146.                     if (deltaPosition.y > sliderMagnitude)
  147.                     {
  148.                         lerpSlider = true;
  149.                     }
  150.                 }
  151.             }
  152.  
  153.             //Provvisorio per spostamento da pc
  154.             if (Input.GetKeyDown(KeyCode.RightArrow))
  155.             {
  156.                 lerp = true;
  157.                 page++;
  158.                 flag = false;
  159.             }
  160.             if (Input.GetKeyDown(KeyCode.LeftArrow))
  161.             {
  162.                 lerp = true;
  163.                 page--;
  164.                 flag = false;
  165.             }
  166.             if (Input.GetKeyDown(KeyCode.UpArrow))
  167.             {
  168.                 lerpSlider = true;
  169.             }
  170.  
  171.             //lo slider appare
  172.             if (lerpSlider)
  173.             {
  174.                 slider.transform.position = Vector3.Lerp(slider.transform.position, new Vector3(slider.transform.position.x, sliderActivePosition, slider.transform.position.z), speedSlider * Time.deltaTime);
  175.                 if (Vector3.Distance(slider.transform.position, new Vector3(slider.transform.position.x, sliderActivePosition, slider.transform.position.z)) <= 0.02)
  176.                 {
  177.                     slider.transform.position = new Vector3(slider.transform.position.x, sliderActivePosition, slider.transform.position.z);
  178.                     lerpSlider = false;
  179.                     sliderActive = true;
  180.                     timerSlider = sliderFadeTime;
  181.                 }
  182.             }
  183.  
  184.         }
  185.         else
  186.         {
  187.             //modalità slideshow: cambio diapositiva ogni <changetime> secondi
  188.             timer += Time.deltaTime;
  189.             if(timer>=changeTime)
  190.             {
  191.                 timer = 0;
  192.                 page++;
  193.                 lerp = true;
  194.                 flag = false;
  195.             }
  196.         }
  197.  
  198.         if (lerp)
  199.         {
  200.             //fine capitolo
  201.             if (page == goal.Length) page--;
  202.             //prima pagina
  203.             if (page < 0) page = 0;
  204.             transform.position = Vector3.Lerp(transform.position, new Vector3(goal[page], transform.position.y, transform.position.z), speed * Time.deltaTime);
  205.             if (Vector3.Distance(transform.position, new Vector3(goal[page], transform.position.y, transform.position.z)) == 0)
  206.             {
  207.                 lerp = false;
  208.             }
  209.         }
  210.  
  211.        
  212.         if (sliderActive)
  213.         {
  214.             timerSlider -= Time.deltaTime;
  215.             //lo slider scompare
  216.             if (timerSlider <= 0)
  217.             {
  218.                 slider.transform.position = Vector3.Lerp(slider.transform.position, new Vector3(slider.transform.position.x, sliderIdlePosition, slider.transform.position.z), speedSlider * Time.deltaTime);
  219.                 if (Vector3.Distance(slider.transform.position, new Vector3(slider.transform.position.x, sliderIdlePosition, slider.transform.position.z)) <= 0.02)
  220.                 {
  221.                     slider.transform.position = new Vector3(slider.transform.position.x, sliderIdlePosition, slider.transform.position.z);
  222.                     lerpSlider = false;
  223.                     sliderActive = false;
  224.                 }
  225.             }
  226.         }
  227.  
  228.         //In base alla pagina corrente richiamo lo script corrispondente
  229.         if (flag == false && page != 0)
  230.         {
  231.             Music(page);
  232.             DisableImages(page);
  233.         }
  234.     }
  235.  
  236.     public void Music(int pagina)
  237.     {
  238.         Debug.Log(pagina);
  239.         switch (pagina)
  240.         {
  241.             case 1:
  242.                 AkSoundEngine.PostEvent("Music_chapter_01_Play", gameObject);
  243.                 AkSoundEngine.PostEvent("Wind_chapter_01_Play", gameObject);
  244.                 break;
  245.  
  246.             case 2:
  247.                 AkSoundEngine.PostEvent("Birds_chapter_01_Play", gameObject);
  248.                 slideshow = true; //test slideshow
  249.                 break;
  250.  
  251.             /*case 5:
  252.             AkEventCallbackInfo.getCPtr(AkCallbackInfo g);
  253.             if( stringa == "false"){
  254.                 AkSoundEngine.PostEvent("Wind_chapter_01_Stop", gameObject);
  255.             }*/
  256.  
  257.             case 6:
  258.                 slideshow = false; //test slideshow
  259.                 AkSoundEngine.PostEvent("Wind_chapter_01_Stop", gameObject);
  260.                 AkSoundEngine.PostEvent("Birds_chapter_01_Stop", gameObject);
  261.                 break;
  262.  
  263.             case 8:
  264.                 AkSoundEngine.PostEvent("Tv_chapter_01_Play", gameObject);
  265.                 break;
  266.  
  267.             case 9:
  268.                 AkSoundEngine.PostEvent("Tv_chapter_01_Stop", gameObject);
  269.                 break;
  270.  
  271.             case 12:
  272.                 AkSoundEngine.PostEvent("Wind_chapter_01_Play", gameObject);
  273.                 break;
  274.  
  275.             case 13:
  276.                 AkSoundEngine.PostEvent("Girl_in_chapter_01_Play", gameObject);
  277.                 break;
  278.  
  279.             case 14:
  280.                 AkSoundEngine.PostEvent("Girl_in_chapter_01_Stop", gameObject);
  281.                 break;
  282.  
  283.             case 18:
  284.                 AkSoundEngine.PostEvent("Music_chapter_01_Stop", gameObject);
  285.                 AkSoundEngine.PostEvent("Wind_chapter_01_Stop", gameObject);
  286.                 AkSoundEngine.PostEvent("Cluster_chapter_01_Play", gameObject);
  287.                 break;
  288.  
  289.             case 19:
  290.                 AkSoundEngine.PostEvent("Drone01_chapter_01_Play", gameObject);
  291.                 break;
  292.  
  293.             case 20:
  294.                 AkSoundEngine.PostEvent("Drone02_chapter_01_Play", gameObject);
  295.                 break;
  296.  
  297.             case 21:
  298.                 AkSoundEngine.PostEvent("Drone03_chapter_01_Play", gameObject);
  299.                 break;
  300.  
  301.             case 22:
  302.                 AkSoundEngine.PostEvent("Drone04_chapter_01_Play", gameObject);
  303.                 break;
  304.  
  305.             case 23:
  306.                 AkSoundEngine.PostEvent("Drone05_chapter_01_Play", gameObject);
  307.                 break;
  308.  
  309.             case 25:
  310.                 AkSoundEngine.PostEvent("Drone01_chapter_01_Stop", gameObject);
  311.                 AkSoundEngine.PostEvent("Drone02_chapter_01_Stop", gameObject);
  312.                 AkSoundEngine.PostEvent("Drone03_chapter_01_Stop", gameObject);
  313.                 AkSoundEngine.PostEvent("Drone04_chapter_01_Stop", gameObject);
  314.                 AkSoundEngine.PostEvent("Drone05_chapter_01_Stop", gameObject);
  315.                 break;
  316.  
  317.                 //PER MIGLIORARE QUESTA PARTE USEREI UN CODICE CHE STOPPA TUTTI I SUONI IN ESECUZIONE E FA PARTIRE LA COLONNA SONORA GIUSTA
  318.  
  319.             default:
  320.                 //flag = true;
  321.                 break;
  322.         }
  323.         flag = !flag;
  324.     }
  325.  
  326.  
  327.     private void DisableImages (int currentPage)
  328.     {
  329.         for (int i = 0; i < arrayPagine.Length; i++)
  330.         {
  331.             //lascio attive solo la pag corrente e le due adiacenti
  332.             if (i == currentPage - 1 || i == currentPage || i == currentPage + 1)
  333.                 if (currentPage - 1 == -1 && i == currentPage - 1) { }
  334.                 else if (currentPage + 1 == arrayPagine.Length && i == currentPage + 1) { }
  335.                 else arrayPagine[i].GetComponent<Image>().enabled = true;
  336.             else
  337.                 arrayPagine[i].GetComponent<Image>().enabled=false;
  338.         }
  339.     }
  340.  
  341.     public void sliderMovement()
  342.     {
  343.         timerSlider = sliderFadeTime;
  344.         page = (int)slider.GetComponent<Slider>().value;
  345.         lerp = true;
  346.         flag = false;
  347.     }
  348.  
  349. }
  350.  
  351.  
  352. // AGGIUNGERE CONTATORE PAGINA CORRENTE UI
Parsed in 0.109 seconds