|
2D-программирование Вопросы, касающиеся двумерного программирования |
31.07.2007, 17:55
|
#1
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Как реализовать смену оружия ??
для начала я создал пистолет и автомат !!
оба оружия у меня type weapon !!
как создать смену оружия ??
подскажите !!
|
(Offline)
|
|
31.07.2007, 18:11
|
#2
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: Как реализовать смену оружия ??
А что уже сам написал?
Можно поконкретней что не получается?
|
(Offline)
|
|
31.07.2007, 18:23
|
#3
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Как реализовать смену оружия ??
ну допустим нажимаю "1" - пистолет
"2" - автомат и убираю пистолет. как его убрать ??
если всё оружее одного типа weapon !!
не понял:
|
(Offline)
|
|
31.07.2007, 19:39
|
#4
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Как реализовать смену оружия ??
Можно вот так... В чем трабла то?
Global HandWeapon = 0
Global Pistaled = LoadMesh("pistaled.nah")
HideEntity Pistolet
Global Aftomad = LoadMesh("aftomad.nah")
HideEntity Aftomad
Function ChangeWeapon()
If KeyDown(2) And HandWeapon <> 1 Then
HideEntity Aftomad
HandWeapon = 1
ShowEntity Pistaled
End If
If KeyDown(3) And HandWeapon <> 2 Then
HideEntity Pistaled
HandWeapon = 2
ShowEntity Aftomad
End If
End Function
|
(Offline)
|
|
01.08.2007, 14:10
|
#5
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Как реализовать смену оружия ??
я жу говорю, у меня оружее в типе !!
там нада поменять и скорострельность , и урон и т.д. !!
type weapon
field ent
field speed
field damage
.....
end type
|
(Offline)
|
|
01.08.2007, 15:38
|
#6
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: Как реализовать смену оружия ??
По моему скромному мнение ! лучше сделать скорость и урон у пули!
а смену оружия релизовать как раитер говорит!
а в типе пули при создание написать
если SelectGun=1 (переменная для оружий 1-пистолет 2-автомат ...)
п.ТПуля=нь ТПуля
п\ент=КреатСпхере()
select (SelectGun)
case 1: п\урон=10 : п\скорость=1
case 2: п\урон=30 : п\скорость=1.3
case 3: п\урон=40 : п\скорость=2
...
end select
.....
|
(Offline)
|
|
01.08.2007, 16:15
|
#7
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как реализовать смену оружия ??
я бы сделал немного по другому, ввел бы массив объектов виапон(оружие) заполнил бы их нужным образом, а нажатая цифра при выборе оружия была бы индексом этого массива и соответственно нужным тебе оружием.
|
(Offline)
|
|
01.08.2007, 18:50
|
#8
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Как реализовать смену оружия ??
Так пофик нужно прятать/показывать модели. Масив может подойти только для инфы о оружии. Можто тогда сделать так:
Dim Info(2,2)
Info(1,1) = 10 ; Скорость пули для пистолета
Info(1,2) = 5 ; Урон наносимый пулей
Info(2,1) = 20 ; Скорость пули для автомата
Info(2,2) = 10 ; Урон наносимый пулей
Type BulletType
Field Speed, Damage
End Type
Global HandWeapon = 0
Global Bullet.BulletType
Global Pistaled = LoadMesh("pistaled.nah")
HideEntity Pistolet
Global Aftomad = LoadMesh("aftomad.nah")
HideEntity Aftomad
Function ChangeWeapon()
If KeyDown(2) And HandWeapon <> 1 Then
HideEntity Aftomad
HandWeapon = 1
ShowEntity Pistaled
End If
If KeyDown(3) And HandWeapon <> 2 Then
HideEntity Pistaled
HandWeapon = 2
ShowEntity Aftomad
End If
End Function
Function CreateBullet()
Bullet = New BulletType
Bullet\Speed = Info(HandWeapon,1)
Bullet\Damage = Info(HandWeapon,2)
End Function
Но кому как больше нравится...
а чо эта тема в 2д програминге?
|
(Offline)
|
|
01.08.2007, 21:51
|
#9
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Re: Как реализовать смену оружия ??
Ребята, вы чего? ))
dimanche13 и Райтер говорят об одном и том же. Только dimanche13 не решился реализовать идею, а Райтеровская реализация в коде, откровенно говоря, косовата.
Исправляем на чуть более симпатичную:
...
;массивы для параметров и моделей оружия игрока
Const WeaponClasses=5
Dim WeaponPlayerModel(WeaponClasses)
Dim WeaponDamage(WeaponClasses)
Dim WeaponReloadTime(WeaponClasses)
Dim WeaponAmmo(WeaponClass)
Dim WeaponMaxAmmo(WeaponClass)
Global CurrentPlayerWeapon=0
...
;где-нибудь здесь заполняем массивы моделями и параметрами
...
...
;в цикле определяем клавишу, принадлежащую к диапазону клавиш для смены оружия (1-9)
Key=GetKey()
Key=Key-48
If Key>=1 And Key<=WeaponClasses And Key<>CurrentPlayerWeapon Then
;прячем старое оружие
HideEntity WeaponModel(CurrentPlayerWeapon)
;показываем новое оружие
CurrentPlayerWeapon=Key
ShowEntity WeaponModel(CurrentPlayerWeapon)
End If
Приведенный выше код получше Райтеровского, но он жестко фиксирует клавиши смены оружия за кодами цифр 1-9.
Исправляем это упущение, позволяя произвольно менять коды клавиш смены оружия. Например, в рамках смены раскладки игровой клавиатуры конечным пользователем: не думаете же вы, что все люди играют на WSAD+Мышь+(1-9)?
;массив, хранящий значения клавиш для каждого оружия
Dim KeyPlayerSetWeapon(WeaponClasses)
...
;в цикле: проверяем, не нажата ли занесенная в массив клавиша
NewWeapon=0
For KeyChecker=1 To WeaponClasses
If KeyHit(KeyPlayerSetWeapon(KeyChecker))=1 Then
NewWeapon=KeyChecker
Exit
End If
Next
;И если нажата- ставим новое оружие так, как в первом примере:
If NewWeapon>0 And NewWeapon<>CurrentPlayerWeapon Then
;прячем старое оружие
...
P.S. Писал в браузере. Возможны опечатки.
|
(Offline)
|
|
02.08.2007, 12:14
|
#10
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как реализовать смену оружия ??
Сообщение от Diplomat
Только dimanche13 не решился реализовать идею
|
Я НЕ знаю БЛИТЗ 3Д потому и не реализовал! Вот примерный псевдо-код:
Type Weapon
field mesh ' указатель на изображение оружия
field damage ' остальные сам поймешь
field speed
field dir
....
end type
function InitAllWeapon()
... ' создать массив из 10 оружий(0-9) заполнить все поля
cur_weapon = 0 ' установить текущее оружие нулевое, ножик или еще какая-' енить хрень, бензопила... нет это уже где-то было )))
end function
.... ' где-то в главном цикле
key = getkey()
if(isnumeric(key)) ' проверить, если это цифра, то
new_weapon = key ' узнать новое оружие
ChangeWeapon() ' сменить оружие
end if
if(key = SHOOT_KEY) ' если нажат выстрел
Shoot() ' стрелять из текущего оружия
end if
....
function ChangeWeapon()
if new_weapon <> cur_weapon
hideentity weapon[cur_weapon].mesh ' скрыть текущее оружие
cur_weapon = new_weapon ' сменить оружие на новое
showentity weapon[cur_weapon].mesh ' показать текущее оружие
end if
end function
function Shoot()
weapon[cur_weapon].fire() ' выстрел из текущего оружия
' вот тут ,конечно ,не знаю поддерживает ли Б3Д функции-члены(методы)...
' но в целом, думаю всё понятно
end function
Хотя автор думаю уже всё реализовал, никого не поблагодарив...
|
(Offline)
|
|
02.08.2007, 15:18
|
#11
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Как реализовать смену оружия ??
Diplomat, угу. Накосячил Конечно же лучше юзать GetKey, чем писать 9 проверок
Но если уж делать всё помельче, то имхо лучше всё в 1 масив забить...
Const MaxWeapons = 2
Dim Weapon(MaxWeapons,3)
Weapon(1,1) = LoadMesh("pistaled.nah")
Weapon(1,2) = 10; Скорость пули
Weapon(1,3) = 5 ; Урон наносимый пулей
Weapon(2,1) = LoadMesh("aftomad.nah")
Weapon(2,2) = 20 ; Скорость пули
Weapon(2,3) = 10 ; Урон наносимый пулей
HideEntity Weapon(1,1)
HideEntity Weapon(2,1)
Type BulletType
Field Speed, Damage
End Type
Global CurrentWeapon = 0
Global Bullet.BulletType
Function ChangeWeapon()
Key = GetKey() - 48
If Key => 1 And Key <> CurrentWeapon And Key <= MaxWeapons Then
HideEntity Weapon(CurrentWeapon,1)
CurrentWeapon = Key
ShowEntity Weapon(CurrentWeapon,1)
End IF
End Function
Function CreateBullet()
Bullet = New BulletType
Bullet\Speed = Weapon(CurrentWeapon,2)
Bullet\Damage = Weapon(CurrentWeapon,3)
End Function
|
(Offline)
|
|
02.08.2007, 15:39
|
#12
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как реализовать смену оружия ??
Сообщение от Raiter
Weapon(1,1) = LoadMesh("pistaled.nah")
Weapon(1,2) = 10; Скорость пули
Weapon(1,3) = 5 ; Урон наносимый пулей
Weapon(1,1) = LoadMesh("aftomad.nah")
Weapon(1,2) = 20 ; Скорость пули
Weapon(1,3) = 10 ; Урон наносимый пулей
|
ты наверное опечатался.
думаю как раз так оружие надо делать не просто двумерным массивом, а массивом объектов типов weapon. хотя как удобнее, решает каждый сам
|
(Offline)
|
|
02.08.2007, 15:49
|
#13
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Как реализовать смену оружия ??
Угу. Опячатался. Спс уже исправил.
массивом объектов типов weapon
|
Лично я не вижу смысла заносить оружие в типы. Например ту же скорострельность я делаю глобальной переменной ReloadTime,а конкретно для каждого оружия это значения заношу в масив А остальные параметры можно просто отнести к пуле, для которой есть тип
Как и говорил Horror
По моему скромному мнение ! лучше сделать скорость и урон у пули!
|
|
(Offline)
|
|
02.08.2007, 16:02
|
#14
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как реализовать смену оружия ??
Каждый сам хозяин своего кода. Поэтому делай всегда так ,как хочешь )))
|
(Offline)
|
|
02.08.2007, 16:36
|
#15
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Как реализовать смену оружия ??
Хотя автор думаю уже всё реализовал, никого не поблагодарив...
|
да ты чё !!
всем спасобо !!
очень помогло !!
а чо эта тема в 2д програминге?
|
- сам не знаю как так получилось !!
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:31.
|