Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/56: Рейтинг темы: голосов - 56, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 04.03.2020
Сообщений: 7

Подскажите как сделать подбор предмета в инвентарь по нажатию на него

20.07.2020, 08:23. Показов 11975. Ответов 9

Студворк — интернет-сервис помощи студентам
Чтобы персонаж сначала подошел к нему, и поднял. Получилось сделать, чтоб предмет подбирался сам при столкновении объектов, но модифицировать код для нажатия по нему не получается, все ломается...
Движение в игре - point-click система.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.07.2020, 08:23
Ответы с готовыми решениями:

Как сделать инвентарь для игры с возможностью премещения предметов из него?
Помогите пожалуйста знающие люди создать инвентарь похожий как в играх Alawar про Масяню. Мне бы только кто помог инвентарь сам сделать, а...

Как сделать активным элемент по нажатию на него?
Использую Bootstrap 3. Есть вот такой список: <div class="list-group" > <div class="media" *ngFor="let user of users"> ...

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

9
250 / 186 / 68
Регистрация: 04.03.2019
Сообщений: 1,010
20.07.2020, 12:16
Цитата Сообщение от Shrunk Посмотреть сообщение
код для нажатия по нему не получается, все ломается...
показывайте код. без него нужно к гадалке идти
0
109 / 81 / 37
Регистрация: 13.01.2016
Сообщений: 409
20.07.2020, 12:16
Проверяешь дистанцию между объектом и персонажем. Если она больше дистанции, с которой возможно подобрать предмет, то двигаешься к предмету. Если дистанция достаточная для подбора - берёшь предмет. Возможно сделать через
OnMouseDown(), например.
0
0 / 0 / 0
Регистрация: 04.03.2020
Сообщений: 7
20.07.2020, 17:16  [ТС]
а нужно, чтоб он мог ходить по этим предметам.
Это код который просили:

Добавлено через 7 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class PickUp : MonoBehaviour
{
    private Inventory inventory;
    public GameObject slotButton;
 
 
    private void Start()
    {
        inventory = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventory>();
    }
    private void Update()
    {
 
    }
 
    public void OnTriggerEnter2D(Collider2D other)
    {
        if (hit.collider.gameObject.tag == "Item")
        {
            if (other.CompareTag("Player"))
            {
 
                for (int i = 0; i < inventory.slots.Length; i++)
                {
                    if (inventory.isFull[i] == false)
                    {
                        inventory.isFull[i] = true;
                        Instantiate(slotButton, inventory.slots[i].transform);
                        Destroy(gameObject);
                        break;
                    }
                }
            }
        }
        
        }
    }
0
250 / 186 / 68
Регистрация: 04.03.2019
Сообщений: 1,010
20.07.2020, 17:27
ну впихните в OnTriggerEnter2D
проверку на нажатие клавиши или кнопки
C#
1
2
3
4
if (Input.GetKeyDown(KeyCode.Space))
        {
            Debug.Log("Space key was pressed.");
        }
или без OnTriggerEnter2D но проверяя дистанцию до обьекта
0
0 / 0 / 0
Регистрация: 04.03.2020
Сообщений: 7
20.07.2020, 18:49  [ТС]
Не получилось, воот что написал:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 public void OnTriggerEnter2D(Collider2D other)
    {
 
        if (Input.GetMouseButtonDown(0))
        {
            if (other.CompareTag("Player"))
            {
 
                for (int i = 0; i < inventory.slots.Length; i++)
                {
                    if (inventory.isFull[i] == false)
                    {
                        inventory.isFull[i] = true;
                        Instantiate(slotButton, inventory.slots[i].transform);
                        Destroy(gameObject);
                        break;
                    }
                }
            }
        }
    }
 
Написать @Blood_Jake
0
250 / 186 / 68
Регистрация: 04.03.2019
Сообщений: 1,010
20.07.2020, 19:35
Цитата Сообщение от Shrunk Посмотреть сообщение
OnTriggerEnter2D
лучше использовать OnTriggerStay2D
вы находитесь внутри коллайдера и тогда можно подобрать условием нажатия.
1
0 / 0 / 0
Регистрация: 04.03.2020
Сообщений: 7
21.07.2020, 07:34  [ТС]
Это работает, но правда если подбор и ходьба на одну и ту же кнопку, то получается не очень

Добавлено через 19 минут
Да и после многих тестов, как-то не охотно он подбирает шмотки

Добавлено через 1 минуту
вот код, может что-то не так пишем

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ublic void OnTriggerStay2D(Collider2D other)
    {
        if (Input.GetMouseButtonDown(1))
        {
            if (other.CompareTag("Player"))
            {
                for (int i = 0; i < inventory.slots.Length; i++)
                {
                    if (inventory.isFull[i] == false)
                    {
                        inventory.isFull[i] = true;
                        Instantiate(slotButton, inventory.slots[i].transform);
                        Destroy(gameObject);
                        break;
                    }
                }
            }
        }
    }
Добавлено через 52 секунды
подскажите на счет расчета расстояния, а то чет не понятно
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,076
21.07.2020, 07:52
Цитата Сообщение от Shrunk Посмотреть сообщение
подскажите на счет расчета расстояния, а то чет не понятно
попробуйте коллайдер у дропа сделоть больше чем он сам, и тогде не надо будет определять расстояние
0
250 / 186 / 68
Регистрация: 04.03.2019
Сообщений: 1,010
21.07.2020, 10:16
Цитата Сообщение от Shrunk Посмотреть сообщение
подскажите на счет расчета расстояния, а то чет не понятно
vector3.distance
C#
1
2
3
4
if (Vector3.distance(игрок, предмет) < 1f) 
{
   // предмет близко. можно чтото делать
}
для подсчета расстояния вам необходимо чтобы предметы до которых вы хотите узнать расстояние хранились у вас в списках. то есть при создании вы сразу его пихаете в список и потом перебираете их.

Добавлено через 1 минуту
Цитата Сообщение от zhunshun Посмотреть сообщение
попробуйте коллайдер у дропа сделоть больше чем он сам, и тогде не надо будет определять расстояние
главное не переборщить с коллайдерами, если предметов будут к примеру сотни-тысячи, то это будет нагружать систему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.07.2020, 10:16
Помогаю со студенческими работами здесь

Вычисление интергала, но входные данные сначала считываются из файла, а выходные наоборот в него записываются. Подскажите пожалуйста как это сделать
Заранее спасибо за помощь.) #include&lt;iostream&gt; #include&lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;cmath&gt; using namespace std; float...

Подскажите пожалуйста как запрограммировать в Delphi чтобы по нажатию кнопки открывался сиди ром?как сделать чтобы при вводе в labeledit ФИО при нажат
Подскажите пожалуйста как запрограммировать в Delphi чтобы по нажатию кнопки открывался сиди ром?как сделать чтобы при вводе в labeledit...

Я хочу сделать хороший инвентарь!Нужна подмога!
Я пишу инвентарь ,но у я не могу понять как мне подбирать вещи с пола. Как обратится к вещи. Вот скрипт для вещи:using UnityEngine; ...

Как на форме нарисовать круг, затем по нажатию на него появляется квадрат?
Привет всем, помогите пожалуйста, совсем ничего не выходит как на форме нарисовать круг, затем по нажатию на него появляется...

Как по нажатию кнопки поместить на форму компонент TImage и загрузить в него рисунок?
Помогите pliz, нужно что бы при нажатии кнопки, на определённой форме многооконного приложения создавался компонент типа TImage с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Вот уже год прошел, как у меня домен в reg.ru ...
Etyuhibosecyu 16.04.2026
И ничего они мне не сделали. Если отвязать карту, никакие услуги они не навяжут. Я бы с радостью продлил еще на два года, чтобы не мучиться с временным доменом и меня уже знали по red-star-soft. com,. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru