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

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

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

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

predmeti

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

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

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

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

Видео: Создание персонажа для игры в Unity 2020 | Выживание #2

Создание персонажа для игры в Unity 2020 | Выживание #2

Видео: Как создать и анимировать своего персонажа для вашей игры

Как создать и анимировать своего персонажа для вашей игры

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

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

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;
            }
        }
    }


    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;

Видео: Создание 3D уровня с использованием Progrids и добавление персонажа в Unity

Создание 3D уровня с использованием Progrids и добавление персонажа в Unity

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

Кастомизация персонажа в Unity / Смена одежды и аксессуаров в реалтайме / Как создать игру [Урок 25]
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

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

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

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

Видео

Как создать 3D персонажа

Как создать 3D персонажа

Как сделать 2D платформер на Unity | #1

Как сделать 2D платформер на Unity | #1

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

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

Анимация персонажа + инверсная кинематика - Animation Rigging в Unity / Как создать игру [Урок 75]

Анимация персонажа + инверсная кинематика - Animation Rigging в Unity  / Как создать игру [Урок 75]

крутой ПРЫЖОК в Unity за 7 МИНУТ. Создание персонажа (ч.4)

крутой ПРЫЖОК в Unity за 7 МИНУТ. Создание персонажа (ч.4)

Создание игры на Unity3D - Ruby Adventure урок 7 - Сбор предметов

Создание игры на Unity3D - Ruby Adventure урок 7 - Сбор предметов

КАК ПОДНИМАТЬ ПРЕДМЕТЫ НА КЛАВИШУ В ЮНИТИ!? Уроки unity 3d #1!

КАК ПОДНИМАТЬ ПРЕДМЕТЫ НА КЛАВИШУ В ЮНИТИ!? Уроки unity 3d #1!

КАК ПОДБИРАТЬ ПРЕДМЕТЫ В UNITY 3D???

КАК ПОДБИРАТЬ ПРЕДМЕТЫ В UNITY 3D???

Unity 5,подбирать предметы,скриптинг,создание игр,как создать игру

Unity 5,подбирать предметы,скриптинг,создание игр,как создать игру

Создание персонажа для Unity с помощью Fuse и Blender / Как создать игру [Урок 16]

Создание персонажа для Unity с помощью Fuse и Blender / Как создать игру [Урок 16]

Управление персонажем от первого лица в Unity. Unity управление персонажем от 1 лица #1

Управление персонажем от первого лица в Unity. Unity управление персонажем от 1 лица #1

Гайд - Как создать 3D персонажа в Magicavoxel для игры на Unity и анимации. by Artalasky

Гайд - Как создать 3D персонажа в Magicavoxel для игры на Unity и анимации. by Artalasky

Система взаимодействия с объектами | System interactive | Physics.Raycast | Unity создаем игру #14

Система взаимодействия с объектами | System interactive | Physics.Raycast | Unity создаем игру #14

Unity 5 создание простого персонажа

Unity 5 создание простого персонажа

5. [Unity марафон] Знакомство с уровнями и персонажами | Построение статистики предметов

5. [Unity марафон] Знакомство с уровнями и персонажами | Построение статистики предметов

Top down передвижение в Unity

Top down передвижение в Unity
Поделиться или сохранить к себе:
3dgame-creator
Добавить комментарий

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