Люди, помогите пожалуйста с FPS. У меня возникла проблема. Как ,черт возьми, в юнити сделать функцию "Взять (или подобрать) оружие". Какой скрипт нужно писать, в интернете на такую тему ничего нет, если вы знаете прошу помочь.
привет, вот тебе пример инвентаря для рпг просто посиди пару часов и вникни все это и переделаешь за пару минут
InventoryItem.cs
Code
using UnityEngine;
// элемент инвентаря public class InventoryItem : MonoBehaviour { // название вещи public string itemName; // текстура для инвентаря public Texture2D inventoryTexture; // префаб для сброса вещи public GameObject prefabToDrop; // префаб для одевания public GameObject prefabToEquip; }
SceneItem.cs
Code
using UnityEngine;
// объект сцены, который можно подобрать public class SceneItem : MonoBehaviour { // префаб для инвентаря public InventoryItem prefab;
// если кто-то вошел в триггер, то просим его поднять вещь public void OnTriggerEnter(Collider other) { other.gameObject.SendMessage("Equip", this); }
}
Inventory.cs
Code
using System.Collections.Generic; using UnityEngine;
// инвентарь public class Inventory : MonoBehaviour { // вещи инвентаря public List items = new List(); // надетые вещи public List equipped = new List(); // отображать ли инвентарь public bool showInventory;
public void Update() { // если нужно выбросить вещь if(_itemToDrop!=null) { // удаляем вещь из инвентаря items.Remove(_itemToDrop); // создаем в сцене эту вещь на месте, где стоит игрок Instantiate(_itemToDrop.prefabToDrop, transform.position, transform.rotation); _itemToDrop = null; }
// если нужно одеть if (_itemToEquip != null) { // удаляем вещь из инвентаря items.Remove(_itemToEquip); // добавляем ее к одетым вещам equipped.Add(_itemToEquip); // создаем у игрока эту вещь GameObject itemGameObject= (GameObject)Instantiate(_itemToEquip.prefabToEquip); // так как игрок одел вещь, то она является его чайлдом itemGameObject.transform.parent = transform; _itemToEquip = null; } }
if (sceneItem!= null) { // добавляем вещь в инвентарь items.Add(sceneItem.prefab); // уничтожаем объект сцены Destroy(sceneItem.gameObject); }
}
}
Итак: Первый скрипт представляет собой описание элемента инвентаря. Второй – описание объекта сцены, на котором должен быть коллайдер в режиме триггера, при входе физического объекта в триггер – объект сцены говорит ему “возьми меня”. Третий скрипт представляет собой сам инвентарь и GUI для его отображения.
Каждый элемент инвентаря должен состоять из трех префабов : 1) префаб объекта, выбрасываемого в сцену; 2) префаб одеваемого объекта; 3) префаб, описывающий объект инвентаря, он в сцене не появляется, а используется по ссылке для создания двух других префабов.
Собственно сделать из этого рабочий вариант Вам придется самостоятельно, ну удачи в проекте
Сообщение отредактировал katalist5296 - Воскресенье, 08 Января 2012, 00:04
Flora, да, до чего ведь дошел прогресс лени нынешней молодежи Это вам не FPSC с готовыми решениями. Начни читать FPS Tutorial и 3D Platformer Tutorial, может чего поймешь. Желательно так же справочку полистать. ICQ: 422190728, E-Mail: funnyalien@yandex.ru, Jabber: funnyalien@jabber.ru, Steam: funnyalienvalentine, Twitter: MrFunnyAlien, Skype: happyconsole, ВКонтакте: vk.com/twinemen, Мобильный: +79199212414.