Помогите со скриптом на сохр. откр\закр двери(js) - Форум Игроделов
Пт, 17 Май 2024, 09:53 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » СКРИПТИНГ » Помогите со скриптом на сохр. откр\закр двери(js) (помогите со скриптом)
Помогите со скриптом на сохр. откр\закр двери(js)
PasterLakДата: Ср, 11 Мар 2015, 16:29 | Сообщение # 1
 
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
Помогите разобраться с проблемой.
В общем дело такое: есть дверь, которая как только мы собираем нужное колличество кристаллов открывается(выключается на сцене моделька) при помощи триггера, и после этого значение переменной open_door меняется с 0 на 1 и сохраняется в файле. При загрузке уровня я сделал проверку на то, что значение 0 или 1, сохранение работает идеально, сохраняет переменную 1, но дверь при загрузке снова стоит на месте, хотя в скрипте указано, что если 1, то дверь должна быть выключена. Хз, что не так, уже голову изломал, десятки раз переписывал скрипт на дверь и толку нет,дверь не слушается. Помогите разобраться! Вот скрипт на дверь и на загрузку.

значение open_door как раз и есть та самая 0 и 1, которые сохраняются в файле и должны управлять дверью
значение door - модель двери на которой весит триггер со скриптом ниже

Код
private var diamonds : int = Money.player_diamonds;
var castq : int;
var door : GameObject;
var audiod : AudioSource;
static var open_door : int = 0;
function Start(){
   if(door.active == true){
    if(open_door == 1)   
     door.active = false;
      else
     door.active = true;
     }
}
   function OnTriggerEnter(other : Collider) {
      if(other.tag == "Player") {
    if(Money.player_diamonds >= castq) {
     open_door = 1;
     audiod.Play();
     yield WaitForSeconds(0.5);
     door.active = false;
      }
   }
   }


Игра сохраняется кнопкой, происходит успешная запись числа 1 когда дверь я открываю, но при загрузке дверь почему то не выключается
door1 - переменная которая загружает число и даёт его open_door из скрипта сверху
Код
class Load extends MonoBehaviour {
     
    var x : float;
    var y : float;
    var z : float;
    var diamonds : int = Money.player_diamonds;
    var door1 : int = Door_Script.open_door;
     
   
   function Start () : void {
            var streamReader : StreamReader= new StreamReader("Data/Save/Position.xbn");
    if(streamReader != null) {
            while (!streamReader.EndOfStream)  
            {
      x = System.Convert.ToSingle(streamReader.ReadLine());
      y = System.Convert.ToSingle(streamReader.ReadLine());
      z = System.Convert.ToSingle(streamReader.ReadLine());
      diamonds = System.Convert.ToSingle(streamReader.ReadLine());
      door1 = System.Convert.ToSingle(streamReader.ReadLine());
            }
     if(x != 0 && y != 0 && z != 0)   
      transform.position = new Vector3(x, y, z);
     Money.player_diamonds = diamonds;
     Door_Script.open_door = door1;
    }
}
}

Надеюсь вы поможете мне разобраться в чём моя ошибка.


Сообщение отредактировал PasterLak - Ср, 11 Мар 2015, 16:30
 
СообщениеПомогите разобраться с проблемой.
В общем дело такое: есть дверь, которая как только мы собираем нужное колличество кристаллов открывается(выключается на сцене моделька) при помощи триггера, и после этого значение переменной open_door меняется с 0 на 1 и сохраняется в файле. При загрузке уровня я сделал проверку на то, что значение 0 или 1, сохранение работает идеально, сохраняет переменную 1, но дверь при загрузке снова стоит на месте, хотя в скрипте указано, что если 1, то дверь должна быть выключена. Хз, что не так, уже голову изломал, десятки раз переписывал скрипт на дверь и толку нет,дверь не слушается. Помогите разобраться! Вот скрипт на дверь и на загрузку.

значение open_door как раз и есть та самая 0 и 1, которые сохраняются в файле и должны управлять дверью
значение door - модель двери на которой весит триггер со скриптом ниже

Код
private var diamonds : int = Money.player_diamonds;
var castq : int;
var door : GameObject;
var audiod : AudioSource;
static var open_door : int = 0;
function Start(){
   if(door.active == true){
    if(open_door == 1)   
     door.active = false;
      else
     door.active = true;
     }
}
   function OnTriggerEnter(other : Collider) {
      if(other.tag == "Player") {
    if(Money.player_diamonds >= castq) {
     open_door = 1;
     audiod.Play();
     yield WaitForSeconds(0.5);
     door.active = false;
      }
   }
   }


Игра сохраняется кнопкой, происходит успешная запись числа 1 когда дверь я открываю, но при загрузке дверь почему то не выключается
door1 - переменная которая загружает число и даёт его open_door из скрипта сверху
Код
class Load extends MonoBehaviour {
     
    var x : float;
    var y : float;
    var z : float;
    var diamonds : int = Money.player_diamonds;
    var door1 : int = Door_Script.open_door;
     
   
   function Start () : void {
            var streamReader : StreamReader= new StreamReader("Data/Save/Position.xbn");
    if(streamReader != null) {
            while (!streamReader.EndOfStream)  
            {
      x = System.Convert.ToSingle(streamReader.ReadLine());
      y = System.Convert.ToSingle(streamReader.ReadLine());
      z = System.Convert.ToSingle(streamReader.ReadLine());
      diamonds = System.Convert.ToSingle(streamReader.ReadLine());
      door1 = System.Convert.ToSingle(streamReader.ReadLine());
            }
     if(x != 0 && y != 0 && z != 0)   
      transform.position = new Vector3(x, y, z);
     Money.player_diamonds = diamonds;
     Door_Script.open_door = door1;
    }
}
}

Надеюсь вы поможете мне разобраться в чём моя ошибка.

Автор - PasterLak
Дата добавления - 11 Мар 2015 в 16:29
Форум Игроделов » UNITY3D » СКРИПТИНГ » Помогите со скриптом на сохр. откр\закр двери(js) (помогите со скриптом)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024