Автор Тема: помогите со скриптами  (Прочитано 971 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Сентябрь 05, 2016, 21:09:35 pm
Прочитано 971 раз

Валерич

  • Новичок

  • Оффлайн
  • *

  • 1
  • Репутация:
    0
    • Просмотр профиля
Привет всем :)делаю игру на андроид, есть два персонажа (шарики),жизнь одна на двоих,  жизни  на шарике №1(полоска gui итд), второй устроен так что передает первому при контакте oncollision шарику №1 информацию о столкновении и у первого жизни утекают, собственно т.к жизнь одна,все бы хорошо в смысле  переиграть еще раз ,но вот game over както не работает на шаре№2,на
1-ом  работает ...не знаю лучший ли это способ, но вроде как все готово... :'(

на 1 шарике :


using UnityEngine;
using System.Collections;

public class LoadPrefs : MonoBehaviour {

   // Use this for initialization
   void Start () {
      PlayerPrefs.SetInt("life", 0);
      PlayerPrefs.SetInt("LifeCount", 0);


   }
}


так же на 1ом:

using UnityEngine;

using System.Collections;

public class Life : MonoBehaviour {

   public int life = 3;
   public Texture fon;
   public Texture ramp;
   public Texture lifebar;
   public Texture onelife;
   public int LifeСount = 1;
   public GUISkin mySkin;
   public bool Visible = true;
   public GameObject pLost;
   public GameObject pGame_over;
   public GameObject other;//откл скрипт Таймер


   
   // Use this for initialization
   void Start () {

      

      GetComponent <Life>().life = PlayerPrefs.GetInt ("LifeСount", life);

      
      
   }

   
   
   // Update is called once per frame
   void Update () {


   }
   void  OnCollisionEnter2D(Collision2D c ){
      if (c.gameObject.tag != "border") { return; }
      if ((life -= 1) <= 0)  {
         
         if ((LifeСount -= 1) <= 0){
            
            if ((life = 0) <= 0){
               (Visible)= false;

               if ((LifeСount = 0) <= 0){

               if (PlayerPrefs.HasKey("life")){
                  PlayerPrefs.DeleteKey("life");
                  PlayerPrefs.DeleteAll();
                  PlayerPrefs.Save();
                  
               }
               if ((LifeСount = 0) <= 0)
                  
               
               if (PlayerPrefs.HasKey("LifeСount")){
                  PlayerPrefs.DeleteKey("LifeСount");
                  PlayerPrefs.DeleteAll();
                  PlayerPrefs.Save();
                  
               }else{ life = 3; }

            other = GameObject.Find ("Cube");
            Timer scr = other.GetComponent<Timer>();
            scr.enabled=false;//откл скрипт Таймер
            Time.timeScale = 0;
                  pLost.SetActive(false);
            pGame_over.SetActive(true);

            if (PlayerPrefs.GetString ("Music") == "no")
               pGame_over.GetComponent <AudioSource>().mute = false;
               
               }
            }
         }
      }
   }
   

и на втором шарике:

using UnityEngine;
using System.Collections;

public class Life_ball : MonoBehaviour {


   public int life =  3;
   
   public int LifeСount = 1;
   
   //public bool Visible = true;
   //public GameObject pLost2;
   //public GameObject pGame_over2;
   //public GameObject other;//откл скрипт Таймер
   ////////////public Life preplay;
   ///////////public Life gameower;

   
   
   // Use this for initialization
   void Start () {

      
      
   }
   

   
   

   // Update is called once per frame
   void Update () {
      
   }
   void  OnCollisionEnter2D(Collision2D b ){
      //if (b.gameObject.tag != "border") { return; }
      if (b.gameObject.tag != "border"){ return; }
      if ((life -= 1) <= 0) {
         GameObject.Find ("heroidle_0").GetComponent<Life> ().life -=1;

         if ((LifeСount -= 1) <= 0) {
            GameObject.Find ("heroidle_0").GetComponent<Life> ().LifeСount -=1;

            
            if ((life = 0) <= 0) {
                  //както тут должно быть с 1ого скрипа брать pGame_over



               
               if ((LifeСount = 0) <= 0) {

                  
                  if (PlayerPrefs.HasKey ("life")) {
                     PlayerPrefs.DeleteKey ("life");
                     PlayerPrefs.DeleteAll ();//
                     PlayerPrefs.Save ();
                     //Application.LoadLevel("level_1");
                  }

                  if ((LifeСount = 0) <= 0)
            
                     
                     
                  if (PlayerPrefs.HasKey ("LifeСount")) {
                     PlayerPrefs.DeleteKey ("LifeСount");
                     PlayerPrefs.DeleteAll ();
                     PlayerPrefs.Save ();
                     //Application.LoadLevel("level_1");
                  } else {life =3 ;}
                     

               
                     
                  }
               }
            }
         }
      }
   }   
конечно есть еще по одному скрипту с oncollision на каждом из шариков итд, но вроде здесь ? !в коде  life =0, и LifeCount = 0,l должно быть что то синхронного проигрыша,второй шарик не могу заставить проигрывать....не знаю как еще сказать
« Последнее редактирование: Сентябрь 05, 2016, 22:43:14 pm от Валерич »