Вторник, 23 Апреля 2024, 19:12

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Записи участника » Zekkin [29]
Результаты поиска
ZekkinДата: Среда, 20 Апреля 2016, 21:58 | Сообщение # 21 | Тема: Сохранение персонажа - где?
частый гость
Сейчас нет на сайте
Слабо представляю как это сделать. Буду гуглить, если это действительно возможно то замечательно.
ZekkinДата: Среда, 20 Апреля 2016, 21:37 | Сообщение # 22 | Тема: Сохранение персонажа - где?
частый гость
Сейчас нет на сайте
Доброе время суток. Интересует мнение сообщества - как лучше реализовать сохранение персонажа - на каждом отдельном сервере (игра по типу создал сервер/присоединился к серверу - играй) или же у игрока на ПК? В первом случае будет досадно терять персонажа при переходе с сервера на сервер, во втором - могут банально выкладывать персонажей в интернет и после смерти (в игре фуллдроп) заменять "голый" сейв заранее скопированным "одетым". Возможно ли как-то обезопаситься от этого или банально изменить схему сохранения? Благодарствую.
ZekkinДата: Среда, 20 Апреля 2016, 21:29 | Сообщение # 23 | Тема: Инвентарь и подбор вещи с пола
частый гость
Сейчас нет на сайте
Доброе время суток. Делаю инвентарь, и столкнулся с проблемой - никак не могу сделать подбор предметов. Пока сделал так:
Код
using UnityEngine;
using System.Collections;

public class Item001 : MonoBehaviour {
    private Inventory inv;

    // Use this for initialization
    void Start () {

    }
    void OnMouseDown () {
  inv = GetComponent<Inventory>();
  for (int i=0; i<=25; i++)
  {
   if (inv.InventoryPlayer[i] == null)
   {
    inv.InventoryPlayer.Add(i, ItemData._ItemData.ItemGen(0));
    break;
   }
  }
    }
    

}


И при попытке подбора пишет ошибку:

Код
NullReferenceException: Object reference not set to an instance of an object
Item001.OnMouseDown () (at Assets/Items/ItemScripts/Item001.cs:15)
UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32)


С чем связано и как исправить? Спасибо.
ZekkinДата: Понедельник, 21 Марта 2016, 20:48 | Сообщение # 24 | Тема: Проверка на НЕстолкновение
частый гость
Сейчас нет на сайте
Возможно ли проверить объекты на НЕстолкновение? Если да, то как? Справка и гугл молчат.
Проверяю на столкновение таким образом:

Код
void OnTriggerEnter(Collider Building)
    {
    if (Building.gameObject.tag == "Build") {  
      
      GlobalVars.Str = 1;
    }


GlobalVars.Str - переменная, определяющая можно установить объект на этом месте или нет. Точнее, она должна это проверять, но без проверки НЕстолкновения этого сделать нельзя. По крайней мере, я не знаю как. Возможно, если создать вокруг коллайдера еще четыре и проверять нечто вроде:

Код
if ((Building.gameObject.tag == "1234") && (Building.gameObject.tag == "Build")) // 1234 - четыре прямоугольных коллайдера, окружающих основной
{  
GlobalVars.Str = 1;
    }
if (Building.gameObject.tag == "1234")
{  
GlobalVars.Str = 0;
    }


Но это какой-то жуткий костыль. Просто подсказки куда копать будет достаточно =)

Заранее спасибо.

Добавлено (21 марта 2016, 20:44)
---------------------------------------------
Еще можно создать таймер с сообщением "Здесь нельзя строить! Попробуйте через Nсек", и через Nсек устанавливать GlobalVars.Str = 0, но это тоже не торт.

Добавлено (21 марта 2016, 20:48)
---------------------------------------------
Разобрался. Какой я все-таки затупок, все оказалось гора-а-аздо проще. Если кто столкнется с таким-же - используйте
OnTriggerExit - проверяет на НЕстолкновение, как раз таки.


Сообщение отредактировал Zekkin - Понедельник, 21 Марта 2016, 20:49
ZekkinДата: Понедельник, 21 Марта 2016, 19:57 | Сообщение # 25 | Тема: "Призрак" устанавливаемого объекта
частый гость
Сейчас нет на сайте
Действительно, проблема оказалась в коллайдере. Убрал коллайдер в другой слой, все стало нормально. Спасибо =)
ZekkinДата: Воскресенье, 20 Марта 2016, 22:34 | Сообщение # 26 | Тема: "Призрак" устанавливаемого объекта
частый гость
Сейчас нет на сайте
Добрый день. Делаю установку объектов (строительство) а-ля TD. Объекты устанавливаются, все замечательно, даже "призрак" (прозрачная модель объекта) есть, но... По неведомой мне причине "призрак" героически летит в центр камеры, хотя, по-идее, должен оставаться в точке соприкосновения луча и террейна. Код ниже.

Объявления:
Код

    public UnityEngine.Camera Camera;
    
    public GameObject Home01;
    public GameObject Home01Ghost;
    public GameObject ghost;
    public LayerMask raycastLayers = 1;
    public static int Placing = 0;
    public static int Home = 1;
    private RaycastHit hit;


Код:
Код
private void Update()
    {
  if ((Placing == 1) & (Home == 1)) // Placing - переменная, обозначающая - строю я или нет. Home - ID устанавливаемого объекта.
  {
   if (ghost == null) ghost = Instantiate(Home01Ghost) as GameObject;
   else
   {
   Ray ray = Camera.ScreenPointToRay(Input.mousePosition);
    if (Physics.Raycast(ray, out hit, Mathf.Infinity, raycastLayers))
    {
     Quaternion normana = Quaternion.FromToRotation(Vector3.up, hit.normal);
     ghost.transform.position = hit.point;
     ghost.transform.rotation = normana;
     if (Input.GetMouseButtonDown(0))
     {
      GameObject Roo = Instantiate(Home01, ghost.transform.position, ghost.transform.rotation) as GameObject;
     Placing = 0;
      Destroy(ghost);
      
     }
    }
   }

  }
  }


Возможно, проблема в том что нужно

Код
Ray ray = Camera.ScreenPointToRay(Input.mousePosition);
сменить на
Код
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);


Но в таком случае призрак устанавливается в определенной точке и не следует за мышью. Больше одного не появляется и спамит ошибкой

Код
NullReferenceException: Object reference not set to an instance of an object
GUIz.Update () (at Assets/Script/Interface/GUIz.cs:127)


Заранее спасибо.


Сообщение отредактировал Zekkin - Воскресенье, 20 Марта 2016, 22:41
ZekkinДата: Суббота, 19 Марта 2016, 19:00 | Сообщение # 27 | Тема: Уничтожение определенного объекта
частый гость
Сейчас нет на сайте
Благодарю, теперь буду знать =)
Почитаю. До этого момента работал с Паскалем, недавно перешел на С#. Осваиваюсь.


Сообщение отредактировал Zekkin - Суббота, 19 Марта 2016, 19:03
ZekkinДата: Суббота, 19 Марта 2016, 18:49 | Сообщение # 28 | Тема: Уничтожение определенного объекта
частый гость
Сейчас нет на сайте
В таком случае при выполнении такого скрипта у другого юнита:
Код
if (Vector3.Distance (transform.position, target.transform.position) < (MoveMobs.attackDistance) && (qw == false)) {
   MobsHP.health -= damage;
   Debug.Log("attack");
   qw = true;
  }

Появляется ошибка:
Код
Assets/Script/Mobs/MoveMobs.cs(37,49): error CS0120: An object reference is required to access non-static member `MobsHP.health'

Что ему не нравиться я не понимаю wacko
ZekkinДата: Суббота, 19 Марта 2016, 18:35 | Сообщение # 29 | Тема: Уничтожение определенного объекта
частый гость
Сейчас нет на сайте
Всем привет. Подскажите, что нужно добавить в код:
Код
using UnityEngine;
using System.Collections;

public class MobsHP : MonoBehaviour {

    public static int health;
    public int healthMax;
    

    void Start () {

  health = healthMax;
    }
    
    // Update is called once per frame
    void Update () {
  if (health <= 0)
      Destroy (gameObject);
    }
}

На данный момент когда health опускается до 0 умирают все враги с этим скриптом. Как можно отнять health только у атакуемого врага? Спасибо.


Сообщение отредактировал Zekkin - Суббота, 19 Марта 2016, 18:35
Форум игроделов » Записи участника » Zekkin [29]
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг