Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 31.07.2007, 17:55   #1
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Как реализовать смену оружия ??

для начала я создал пистолет и автомат !!
оба оружия у меня type weapon !!
как создать смену оружия ??
подскажите !!
(Offline)
 
Ответить с цитированием
Старый 31.07.2007, 18:11   #2
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Re: Как реализовать смену оружия ??

А что уже сам написал?
Можно поконкретней что не получается?
(Offline)
 
Ответить с цитированием
Старый 31.07.2007, 18:23   #3
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Re: Как реализовать смену оружия ??

ну допустим нажимаю "1" - пистолет
"2" - автомат и убираю пистолет. как его убрать ??
если всё оружее одного типа weapon !!

не понял:
А что уже сам написал?
(Offline)
 
Ответить с цитированием
Старый 31.07.2007, 19:39   #4
Raiter
Гигант индустрии
 
Регистрация: 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
IGR
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
Horror
Бывалый
 
Регистрация: 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
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Как реализовать смену оружия ??

я бы сделал немного по другому, ввел бы массив объектов виапон(оружие) заполнил бы их нужным образом, а нажатая цифра при выборе оружия была бы индексом этого массива и соответственно нужным тебе оружием.
(Offline)
 
Ответить с цитированием
Старый 01.08.2007, 18:50   #8
Raiter
Гигант индустрии
 
Регистрация: 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
Diplomat
Дэвелопер
 
Регистрация: 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
dimanche13
Мастер
 
Регистрация: 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
Raiter
Гигант индустрии
 
Регистрация: 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
dimanche13
Мастер
 
Регистрация: 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
Raiter
Гигант индустрии
 
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений
(для 92 пользователей)
Re: Как реализовать смену оружия ??

Угу. Опячатался. Спс уже исправил.
массивом объектов типов weapon
Лично я не вижу смысла заносить оружие в типы. Например ту же скорострельность я делаю глобальной переменной ReloadTime,а конкретно для каждого оружия это значения заношу в масив А остальные параметры можно просто отнести к пуле, для которой есть тип
Как и говорил Horror
По моему скромному мнение ! лучше сделать скорость и урон у пули!
(Offline)
 
Ответить с цитированием
Старый 02.08.2007, 16:02   #14
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Как реализовать смену оружия ??

Каждый сам хозяин своего кода. Поэтому делай всегда так ,как хочешь )))
(Offline)
 
Ответить с цитированием
Старый 02.08.2007, 16:36   #15
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Re: Как реализовать смену оружия ??

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

а чо эта тема в 2д програминге?
- сам не знаю как так получилось !!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP — Постоянно-выполняемый скрипт — Как реализовать? zheland Болтовня 7 21.08.2009 14:15
3D+2D. Реализовать в Blitz3d или в Blitzmax? Yanez 3D-программирование 16 25.12.2008 07:02
Как реализовать пыльную бурю для RTS? Maxim1441 3D-программирование 9 24.07.2008 19:37
Как реализовать эквалайзер? IGR 3D-программирование 10 05.06.2007 05:53
как реализовать свой Sky_Box Bazalt 3D-программирование 4 01.04.2007 15:25


Часовой пояс GMT +4, время: 17:03.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com