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

Создание оружия для FPS шутера

31.05.2022, 18:15. Показов 1661. Ответов 21

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Мне нужен совет. Я начинаю писать fps shooter и для меня создание оружия - это в новинку и не совсем понимаю как лучше создать: через scriptable object или просто написать один скрипт для каждого отдельного типа оружия.

Любые ответы приму и учту, надеюсь на вашу отзывчивость!)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2022, 18:15
Ответы с готовыми решениями:

FPS Анимации для персонажа и оружия
Всем привет, очень долго меня мучает вопрос: Как правильно разделить оружие и персонажа, что бы один персонаж мог брать разные Ганы, у...

Как сделать перемещение камеры в пространстве по типу FPS шутера
Как сделать перемещение камеры в пространстве по типу FPS шутера? Без тормозов. Даже без вращения, просто анимировать перемещение камеры к...

Создание триггербота для онлайн-шутера APB Reloaded
У меня есть небольшая проблема, ищу триггербот на игру "APB Reloaded" уже очень давно, полно всяких разводил на деньги, вирусы и т.д.,...

21
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,076
31.05.2022, 19:20
aleeuz, Если вы понимаете как делать игры вы поимете. Персонаж доходит до конца локаии -- начинается другая и тоже самое происходит в следующем случае. Не надо придумывать ничего нового.
0
UNITY
76 / 49 / 28
Регистрация: 20.04.2022
Сообщений: 159
31.05.2022, 23:00
aleeuz, одного скрипта в большинстве случаев достаточно. просто в настройках выбираете нужные характеристики.
Например на пистолете снимаете галочку говорящую, о том, что на оружие крепится оптика или подствольник. и так далее.
Баллистические же параметры для всех пушек одинаковы, но с разными значениями.
0
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
01.06.2022, 11:39
UnityNub, угу, и РПГ, и пулемёт, и огнемёт - у всех баллистика одинакова

aleeuz, если делать набор пушек, то гораздо проще и визуально приятнее, делать для каждого отдельный скрипт, который наследуется от общего, содержащего основные параметры (скорость стрельбы, ёмкость магазина, дальность попадания). А уже в персонализированном скрипте описывать их отличительные особенности.
1
UNITY
76 / 49 / 28
Регистрация: 20.04.2022
Сообщений: 159
01.06.2022, 12:22
BattleCrow,
Цитата Сообщение от BattleCrow Посмотреть сообщение
угу, и РПГ, и пулемёт, и огнемёт - у всех баллистика одинакова
да одинаковая Баллистика

Балли́стика (от греч. βάλλειν — бросать) — наука о движении тел, брошенных в пространстве, основанная на математике и физике. Она занимается, главным образом, исследованием движения пуль и снарядов, выпущенных из огнестрельного оружия, ракетных снарядов и баллистических ракет.
0
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
01.06.2022, 12:27
UnityNub, расскажи, пожалуйста, что огнемёт-то тебе бросает?
Насчёт РПГ и огнестрела, я ещё понимаю. Но, думаю, ты понял, что я имел в виду своими словами. Да и очень редко в FPS шутерах как-то сильно играются с баллистикой. В основном пули летят строго прямо.
0
UNITY
76 / 49 / 28
Регистрация: 20.04.2022
Сообщений: 159
01.06.2022, 12:42
BattleCrow, огнемет выпускает газ, который поджигают. и который под воздействием гравитации притягивается к земле. если присмотреться, то видно, что пламя чем дальше от источника, том ниже. это и есть баллистическая траектория стрельбы из огнемета.
0
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
01.06.2022, 12:49
UnityNub, а теперь проецируем всё сказанное тобой в реалии геймдева. Какова вероятность того, что aleeuz, который, как он сам говорит, только начинает свой путь, будет реализовывать баллистику брызг топлива из сопла огнемёта?

И вообще, зачем так душнить?
0
UNITY
76 / 49 / 28
Регистрация: 20.04.2022
Сообщений: 159
01.06.2022, 13:01
BattleCrow, речь шла о использовании однотипного кода для всех типов оружия. и на моих примерах стало ясно, что можно использовать один код. для любого ручного огнестрельного оружия. для примера привожу конфиги из игры сталкер, которые можно интерпретировать как ScriptableObjects в Unity.
Вложения
Тип файла: txt w_abakan.txt (10.6 Кб, 9 просмотров)
Тип файла: txt w_gauss.txt (5.1 Кб, 3 просмотров)
Тип файла: txt w_pm.txt (6.2 Кб, 3 просмотров)
Тип файла: txt w_svu.txt (5.2 Кб, 3 просмотров)
0
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
01.06.2022, 13:08
UnityNub,
Цитата Сообщение от BattleCrow Посмотреть сообщение
отдельный скрипт, который наследуется от общего, содержащего основные параметры
Понятно, что есть общие параметры. И они могут быть в главном скрипте. А всякие, например примочки можно настраивать уже под конкретное оружие.

Сам посуди, что удобнее:
1) На каждой пушке указывать переменную bool, что можно на неё нацепить и что нельзя.
2) Изначально такие параметры указывать в персонализированном скрипте.

ООП C# предоставляет все инструменты наследования для удобства таких вот вещей. Нет никакой необходимости писать код на тысячи строк, который будет в себе содержать все возможные и невозможные параметры всех орудий в игре. В случае с одним скриптом мы также немного проигрываем в автономности и универсальности.
0
UNITY
76 / 49 / 28
Регистрация: 20.04.2022
Сообщений: 159
01.06.2022, 13:10
aleeuz, самый простой наверное способ описать так.
C#
1
2
3
4
5
6
7
//если огнестрельное оружие в руках
if(Input.GetMouseButtonDown(0))
{
    //обращаемся к ScriptableObjects оружия
    //на предмет типа патронов. дальнострельности. скорострельности. разброса пуль в зависимости от дальности стрельбы и т.д.
    //производим выстрел!
}
Добавлено через 1 минуту
BattleCrow,
Цитата Сообщение от BattleCrow Посмотреть сообщение
Какова вероятность того, что aleeuz, который, как он сам говорит, только начинает свой путь, будет реализовывать
Цитата Сообщение от BattleCrow Посмотреть сообщение
ООП C#
???
0
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
01.06.2022, 13:16
UnityNub, сначала ты говоришь об различных примочках, которые можно прицепить на оружие, предлагая ограничивать эту возможность через кучу bool полей:
Цитата Сообщение от UnityNub Посмотреть сообщение
что на оружие крепится оптика или подствольник
А теперь приводишь пример про обычную стрельбу, учитывающую лишь несколько параметров. В плане модульности и разнообразия, я считаю мою идею более универсальной.

И вообще, хватит разводить полемику. Спор ни к чему не приведёт, пока не появится независимое мнение. Тратить моё и твоё время впустую как-то бессмысленно.

Добавлено через 2 минуты
UnityNub, за ООП не понял. ООП в C#
Это база. По крайней мере - наследование. Если человек научится им пользоваться, многое станет проще.
Или ты считаешь работу с ScriptableObjects куда более простой и тривиальной?
1
UNITY
76 / 49 / 28
Регистрация: 20.04.2022
Сообщений: 159
01.06.2022, 13:39
Цитата Сообщение от BattleCrow Посмотреть сообщение
Тратить моё и твоё время впустую как-то бессмысленно.
пришел к тому же выводу. аргументов было приведено достаточно, пусть автор поста сам решает, какой выбрать!
Удачи!
0
0 / 0 / 0
Регистрация: 22.08.2021
Сообщений: 3
02.06.2022, 15:08  [ТС]
Доброго времени суток еще раз!

я немного не договорил, когда просил советов. все ваши комментарии мне понятны и учтены, за что благодарю. Но проясню пару моментов:

с ООП я знаком в достаточной степени, и про банальное наследование я знаю, так что все ок
Баллиситику я использовать не буду, так как мне нужно научиться хотя бы прописывать стрельбу)
Вы, комментаторы, для меня открыли новую инфу по scriptable object, за это тоже выражаю благодарность!

Думаю, этих советов мне будет более чем достаточно, так что еще раз выражу благодарность! Огромнейшее спасибо!)
0
1148 / 311 / 161
Регистрация: 30.07.2022
Сообщений: 1,790
Записей в блоге: 4
19.12.2022, 22:53
BattleCrow, UnityNub,
не хочу ни кого обидеть, но старый спор разрешить не помешает =)
ScriptableObjects не противоречат принципам ООП.
из примера видно, что как минимум наследование работает просто превосходно!!!
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
using UnityEngine;
 
namespace ierecumi.studio
{
    public enum TypeEquip
    {
        Weapon,
        Helmet,
        Chest
    }
    [CreateAssetMenu(fileName = "New Equip")]
    public class Equip : ScriptableObject
    {
        [SerializeField] private string _name;
    }
 
    [CreateAssetMenu(fileName = "New Weapon")]
    public class Weapon : Equip
    {
        [SerializeField] private TypeEquip _typeEquip;
 
        private void OnValidate()
        {
            _typeEquip = TypeEquip.Weapon;
        }
    }
 
    [CreateAssetMenu(fileName = "New Helmet")]
    public class Helmet : Equip
    {
        [SerializeField] private TypeEquip _typeEquip;
 
        private void OnValidate()
        {
            _typeEquip = TypeEquip.Helmet;
        }
    }
}
Добавлено через 38 минут
ой
не OnValidate а Awake надо использовать
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
using UnityEngine;
 
namespace ierecumi.studio
{
    public enum TypeEquip
    {
        Weapon,
        Helmet,
        Chest
    }
    [CreateAssetMenu(fileName = "New Equip")]
    public class Equip : ScriptableObject
    {
        [SerializeField] private string _name;
        public TypeEquip _typeEquip;
    }
 
    [CreateAssetMenu(fileName = "New Weapon")]
    public class Weapon : Equip
    {
        private void Awake()
        {
            _typeEquip = TypeEquip.Weapon;
        }
    }
 
    [CreateAssetMenu(fileName = "New Helmet")]
    public class Helmet : Equip
    {
        private void Awake()
        {
            _typeEquip = TypeEquip.Helmet;
        }
    }
}
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,076
19.12.2022, 23:23
devillived, Неплохои пример , тоже про OnValidate подумал куда его??

Добавлено через 5 минут
Только тотом в коде не придется где то писать ierecumi.studio.Helmet?

Добавлено через 5 минут
вы инкапсулировали TypeEquip
0
1148 / 311 / 161
Регистрация: 30.07.2022
Сообщений: 1,790
Записей в блоге: 4
19.12.2022, 23:45
zhunshun,
Цитата Сообщение от zhunshun Посмотреть сообщение
Только тотом в коде не придется где то писать ierecumi.studio.Helmet?
namespace всегда удалить можно. просто у меня он уже в шаблон записан. скрипт создаётся уже с ним.
шаблоны к стати здесь (зависит от версии Unity)
D:\Program Files (x86)\Unity\Editor\2020.3.26f1\Editor\Da ta\Resources\ScriptTemplates
пример моего шаблона
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
    #ROOTNAMESPACEBEGIN#
namespace ierecumi.studio
{
    public class #SCRIPTNAME# : MonoBehaviour
    {
        
        private void Start()
        {
            #NOTRIM#
        }
        
        private void Update()
        {
            #NOTRIM#
        }
    }
}
#ROOTNAMESPACEEND#
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,076
20.12.2022, 00:23
devillived, Да я не знал что так перечисление в скриптаблобджект можно завернуть, это круто

Добавлено через 8 минут
devillived, Так можно любую структуру туда за х-кать
0
1148 / 311 / 161
Регистрация: 30.07.2022
Сообщений: 1,790
Записей в блоге: 4
24.12.2022, 18:35
Цитата Сообщение от zhunshun Посмотреть сообщение
Так можно любую структуру туда за х-кать
структуру, интерфейс, перечисление, ScriptableObject можно сделать абстрактным и переопределить методы внутри него.

хотя если подумать (структуру, интерфейс, перечисление) лучше все же делать отдельным скриптом.
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,076
24.12.2022, 21:58
devillived, не, к вашему перечислению можно будет обращаться только через 1,2.3.4
оно не публичное, даже я больше скажу, это можно будет скомпилировать, но к ним вообще нельзя будет обращатся, public не значчит что оно доступное, вы завернули его в невидимое пространство, а??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2022, 21:58
Помогаю со студенческими работами здесь

FPS Смена оружия
Подскажите пожалуйста,как осуществить в unity смену оружия,ведь у каждого оружия будет своё положение рук,своя анимация.Это всё происходит...

Глобальный онлайн эксперимент - создание супер 3D шутера !
Я вот тут затылок почесал на днях и подумал... Всё равно эта ветка гниёт и в основном вся движуха про DirectX идёт на gamedev.ru :) Дабы...

Возможно ли написать wallhack для шутера?
Возможно ли написать wh на vb.net для шутера? Примеры в студию,если это так.

Выходит обновление для шутера Quake 4
Всем любителям шутера Quake 4 самое время зарезервировать 300 мегабайт Интернет-трафика на закачку очередно обновления для этой игрушки,...

Написание бота для игры (стратегии, шутера)
Здравствуйте! Нужен желающий которому будет не лень написать бота для игры. Описание, инструкции к игре, боту -...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru