Результаты поиска
|
|
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'
Что ему не нравиться я не понимаю
|
|
| |
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 |
|
| |