Войти
ПрограммированиеФорумОбщее

Подскажите как сделать механику

#0
(Правка: 13:50) 1:21, 13 окт. 2021

Очень слабо разбираюсь в программировании, так что буду рад если объясните как это можно сделать.
Игра для телефона, андроид. Взгляд персонажа закреплён за "мышкой" (вдруг это важно).
У игрока нет оружия, но есть хук. Он его кидает чтобы взять предмет (врага или что-то ещё) и кидает, нанося урон и объекту который он кинул, и объекту в который попал.
У меня в голове несколько мыслей по этому поводу:
Создать объект, буквально хук, который держит игрок (им же и производится выстрел). Выстрел прописать как обычным оружием, но при попадании будет фиксироваться не урон, а изменение состояния предмета, в который попал хук, на "пойманный". То есть он полностью деактивируется (не двигается, не наносит урон и т.д.). А при повторном "выстреле" этот предмет летит и наносит урон (и возможно меняет свойства, например взрывается при столкновении или уничтожает "стены").
На словах какая-то логика есть, но как это реализовать в коде не знаю. Да и насколько целесообразно ставить несколько состояний на объект, не будет ли это лишней нагрузкой?
Движок и язык: Unity и C#


#1
11:39, 13 окт. 2021

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

Две механики:
  при подбирании предмет должен становиться дочерним руки (хука?). Чтоб он собственно переносился. Возможно отключить ему физику нужно будет (изменить его состояние, как ты выразился);
  при бросании предмет убираем из дочерних и придаем ускорение в нужном направлении + включаем ему физику. Ну и дальше уже его столкновение обрабатывать с чем-то.

#2
11:45, 13 окт. 2021

Murlita
Да, прошу прощения, косяк.
Unity и C#

Я примерно понимаю как это сделать на словах, проблема конкретно в коде. Я не знаю как это всё прописывать.
Под состоянием я имел в виду что отключится не только физика, но и большая часть функций. Например: объект это враг, который при столкновении с игроком взрывается. Но если его схватить, то взрываться он не будет.

#3
(Правка: 21:34) 21:24, 14 окт. 2021

LzheDmitrey,
  Решений, конечно, существует масса. Ниже одно из
  Задача - подобрать физически просчитываемый объект по нажатию и по второму нажатию бросить.
 
    На объект и на игрока кладем колайдер+ригидбоди. На игрока перед собой вешаем еще один колайдер с галочкой isTrigger. Тогда при попадании физического объекта (имеющего ригидбоди и колайдер) в скрипте игрока будет вызываться метод OnTriggerStay(). В скрипте прописываем следующее:

+ Показать

На самом деле уроков куча, и быстрее найти на ютубе уроки, чем на форуме ждать ответов.
Надеюсь направлю в правильную сторону тебя
#4
13:20, 17 окт. 2021

Снова мой косяк. Забыл казать что игра 2D, с видом сверху. Но не суть.
Если я правильно понял, вы описали процесс поднятия предмета, как в скайриме каком-нибудь. Скорее даже телекинез из него же. То есть взять предмет из далека и бросить вдаль.
Я же хотел именно с помощь объекта хватать вещи:
К игроку прикреплён "граб". При выстреле он отвязывается и летит вперёд. При столкновении идёт проверка можно ли схватить этот объект и если можно, он привязывает к грабу. В любом случае после столкновения граб возвращается назад к игроку.
Но большое спасибо, вы натолкнули меня на путь истинный, а то я стрелял не от персонажа, а от граба.

ПрограммированиеФорумОбщее

Тема закрыта.