Unity 5. Создание полезных предметов для персонажа

Баф, аптечка Уроки

В любой игре присутствую полезные предметы для персонажей или групп, например это всевозможные аптечки, увеличивающие здоровье персонажа, различные вспомогательные эффекты, типа увеличения силы, скорости или ловкости ит.д. Такие же предметы мы и попробуем создать в нашем примере.

В blender’e на скорую руку я «смастерил» несколько предметов, перенес их в Unity и немного «разукрасил». Предметы который будет увеличивать энергию, здоровье и прибавление времени.

predmeti

Скачать можно здесь

Так же, на сцене, присутствует персонаж над которым мы и будем немного издеваться. Создадим скрипт в котором пропишем уровень здоровья, энергии и времени, и назовем его PersState

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

Видео:САМАЯ ПРОСТАЯ РЕАЛИЗАЦИЯ ПОДБОРА ПРЕДМЕТОВ В UNITYСкачать

САМАЯ ПРОСТАЯ РЕАЛИЗАЦИЯ ПОДБОРА ПРЕДМЕТОВ В UNITY
public class PersState : MonoBehaviour { public int PlayerZdorobe = 100; public float PlayerEnergi = 100 ; public float PlayerVrema = 900; public Slider Energi; public Slider Zdorove; public Text Vrema; // Use this for initialization void Start () { } // Update is called once per frame void Update () { PersVrema(); PersEnergi(); } public void PersZdorov() { if (PlayerZdorobe < 0) { PlayerZdorobe = 0; } if (PlayerZdorobe > 100) { PlayerZdorobe = 100; } Zdorove.value = PlayerZdorobe; } public void PersEnergi() { //данная функция будет работать только у меня, вы же на уменьшения энергии можете взять что-то свое или брать эту функцию if (this.gameObject.GetComponent().__push == true) { PlayerEnergi = PlayerEnergi - Time.deltaTime; } else { PlayerEnergi = PlayerEnergi + Time.deltaTime/2; } if (PlayerEnergi < 0) { PlayerEnergi = 0; } if (PlayerEnergi > 100) { PlayerEnergi = 100; } Energi.value = PlayerEnergi; } public void PersVrema() { PlayerVrema = PlayerVrema - Time.deltaTime; Vrema.text = "" + (int)PlayerVrema; } }

Разместим этот скрипт на персонаже и добавим компонент Canvas на сцену где будут находится 2 слайдера (здоровье и энергия) и компонент Text, где будет отображаться время. Укажем эти компоненты в скрипте PersState.

pers slider

Теперь поиграемся немного с нашими «бафами». Создадим на каждом предмете box collaider и поставим галочку isTrigger, и сохраним каждый предмет в Префаб. Далее создадим скрипт, который будет раскидывать наши предметы в рандомном месте. Назовем его PredmetRandomStart

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

Видео:КАК ПОДБИРАТЬ ПРЕДМЕТЫ В UNITY 3D???Скачать

КАК ПОДБИРАТЬ ПРЕДМЕТЫ В UNITY 3D???
public class PredmetRandomStart : MonoBehaviour { public Vector3 center; public Vector3 size; public GameObject zdorove; public GameObject energi; public GameObject vrema; public float timerzdorove; public float timerenergi; public float timervrema; public bool timer1 ; public bool timer2 ; public bool timer3 ; void Start() { timerzdorove = Random.Range(10, 50); timerenergi = Random.Range(10, 50); timervrema = Random.Range(10, 50); } private void Update() { SpawnZdorove(); SpawnEnergi(); SpawnVrema(); } public void SpawnZdorove() { if (timer1) { timerzdorove -= Time.deltaTime; if (timerzdorove <= 0) { Vector3 pos = center + new Vector3(Random.Range(-size.x / 2, size.x / 2), Random.Range(-size.y / 2, size.y / 2), Random.Range(-size.z / 2, size.z / 2)); Instantiate(zdorove, pos, Quaternion.Euler(0f, 0f, -90f)); timerzdorove = Random.Range(10, 50); timer1 = false; } } } public void SpawnEnergi() { if (timer2) { timerenergi -= Time.deltaTime; if (timerenergi <= 0) { Vector3 pos2 = center + new Vector3(Random.Range(-size.x / 2, size.x / 2), Random.Range(-size.y / 2, size.y / 2), Random.Range(-size.z / 2, size.z / 2)); Instantiate(energi, pos2, Quaternion.Euler(0f, 0f, -90f)); timerenergi = Random.Range(10, 50); timer2 = false; } } } public void SpawnVrema() { if (timer3) { timervrema -= Time.deltaTime; if (timervrema <= 0) { Vector3 pos3 = center + new Vector3(Random.Range(-size.x / 2, size.x / 2), Random.Range(-size.y / 2, size.y / 2), Random.Range(-size.z / 2, size.z / 2)); Instantiate(vrema, pos3, Quaternion.Euler(0f, 0f, -90f)); timervrema = Random.Range(10, 50); timer3 = false; } } }

Видео:Как брать и бросать оружие или другие объекты в UnityСкачать

Как брать и бросать оружие или другие объекты в Unity
void OnDrawGizmosSelectes() { Gizmos.color = new Color(1, 0, 0, 0.5f); Gizmos.DrawCube(transform.localPosition + center, size); } }

Поместим этот скрипт на отдельный компонент (пустышку) на сцене и укажем точку откуда будут начинать появляться  предметы и диапазон (в пределах какой зоны будут они появляться), так же укажем наши предметы.

randompredmet

Дальше укажем для каждого предмета, что они будут пополнять при взаимодействии персонажа с ними. Для каждого из них напишем скрипт.

Для предмета который пополняет здоровье скрипт HealthBaf

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HealthBaf : MonoBehaviour {

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}

Видео:КАК СДЕЛАТЬ ВЫБОР ПЕРСОНАЖА В ИГРЕ? | Простой способСкачать

КАК СДЕЛАТЬ ВЫБОР ПЕРСОНАЖА В ИГРЕ? | Простой способ
public void OnTriggerEnter(Collider other) { if (other.gameObject.name == "pers3") { other.GetComponent().PlayerZdorobe = other.GetComponent().PlayerZdorobe + Random.Range(10, 30); GameObject.FindGameObjectWithTag("Scene").GetComponent().timer1 = true; Destroy(gameObject); } } }

Для предмета который пополняет энергию скрипт Energibaf

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Energibaf : MonoBehaviour {

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}

    public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.name == "pers3")
        {
            other.GetComponent().PlayerEnergi = other.GetComponent().PlayerEnergi + Random.Range(10, 30);
            GameObject.FindGameObjectWithTag("Scene").GetComponent().timer2 = true;
            Destroy(gameObject);
        }
    }
}

Для предмета который пополняет время скрипт VremaBaf

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class VremaBaf : MonoBehaviour {

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}
    public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.name == "pers3")
        {
            other.GetComponent().PlayerVrema = other.GetComponent().PlayerVrema + Random.Range(10, 30);
            GameObject.FindGameObjectWithTag("Scene").GetComponent().timer3 = true;
            Destroy(gameObject);
        }
    }
}

baf

Видео:Unity ScriptableObject. Пишем простой инвентарьСкачать

Unity ScriptableObject. Пишем простой инвентарь

Поместим скрипты на предметы и не забываем все сохранять. Теперь, если у вас есть желание можете проверить (запустить игру). Если все настроено верно, персонаж со скриптом отвечающий за здоровье, энергию и время, пустышка со скриптом отвечающий за размещение предметов на сцене и сами предметы со скриптами на увеличение значений персонажа, то все должно сработать. На сцене через какое-то время будут появляться предметы, которые при столкновении с персонажем будут поднимать его статистики и исчезать после этого.

В моем случаем, у меня есть заготовка, где персонаж должен толкать некие предметы в определенную точку, естественно будет тратится энергия, здоровье и тикать время, на видео вы можете все посмотреть.

P.S. Если у вас возникнут вопросы по данной теме, можете задавать их в комментариях или в группе ВК. Удачных проектов!

🔥 Видео

Уроки Unity / Как добавить персонажа (бегает и прыгает)Скачать

Уроки Unity / Как добавить персонажа (бегает и прыгает)

Как подобрать/бросить предмет в Unity 2dСкачать

Как подобрать/бросить предмет в Unity 2d

Кастомизация персонажа в Unity / Смена одежды и аксессуаров в реалтайме / Как создать игру [Урок 25]Скачать

Кастомизация персонажа в Unity / Смена одежды и аксессуаров в реалтайме / Как создать игру [Урок 25]

КАК СДЕЛАТЬ МАГАЗИН СКИНОВ | ПРОСТАЯ ИГРА НА Unity | 6 частьСкачать

КАК СДЕЛАТЬ МАГАЗИН СКИНОВ | ПРОСТАЯ ИГРА НА Unity | 6 часть

ИНВЕНТАРЬ В UNITY #4 || Unity C# Уроки Создание Игр На Андроид 2DСкачать

ИНВЕНТАРЬ В UNITY #4 || Unity C# Уроки Создание Игр На Андроид 2D

Как сделать игру на UNITY в 3D?! Передвижение персонажаСкачать

Как сделать игру на UNITY в 3D?! Передвижение персонажа

Создаю систему крафта для своей игрыСкачать

Создаю систему крафта для своей игры

Что такое Trigger и Collision | Взаимодействие объектов в UnityСкачать

Что такое Trigger и Collision | Взаимодействие объектов в Unity

Инвентарь и система предметов #1 | Создание 2D PixelArt RPG в Unity#9Скачать

Инвентарь и система предметов  #1 | Создание 2D PixelArt RPG в Unity#9

Управление персонажем в Unity 2021Скачать

Управление персонажем в Unity 2021

2D Инвентарь в Unity - легкоСкачать

2D Инвентарь в Unity - легко

Полезные ассеты Unity. Карта разработчика в коментахСкачать

Полезные ассеты Unity. Карта разработчика в коментах
Поделиться или сохранить к себе:
Технологичная помощь
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных, принимаю Политику конфиденциальности и условия Пользовательского соглашения.