Мастер
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений (для 504 пользователей)
|
Система боя врага в РПГ
Пробую написать подобную систему..
Код внутри:

Graphics3D 800,600,32,2
SetBuffer BackBuffer()
Camera=CreateCamera()
Player=CreateCube()
PositionEntity Player,5,0,-5
Player_Health%=100
Enemy=CreateCube()
EntityColor Enemy,200,100,100
Enemy_IsFight=0 ; атакует
Enemy_FightFrame#=0 ; задержка атаки (время размаха)
While Not KeyDown(1)
If KeyDown(200) Then MoveEntity Player,0,0,0.1 ; ^
If KeyDown(208) Then MoveEntity Player,0,0,-0.1 ; \/
If KeyDown(203) Then MoveEntity Player,-0.1,0,0 ; <
If KeyDown(205) Then MoveEntity Player,0.1,0,0 ; >
PositionEntity Camera,EntityX#(Player),EntityY#(Player)+3,EntityZ#(Player)-5
PointEntity Camera,Player
PointEntity Enemy,Player
If EntityDistance#(Enemy,Player)>3 Then
MoveEntity Enemy,0,0,0.08
Else
If Enemy_IsFight=0 Then Enemy_IsFight=1
EndIf
If Enemy_IsFight=1 Then
Enemy_FightFrame#=Enemy_FightFrame#+1
If Enemy_FightFrame#>75 Then
Enemy_IsFight=0
Enemy_FightFrame#=0
If EntityDistance#(Enemy,Player)<4 Then Player_Health=Player_Health-5
EndIf
EndIf
If EntityDistance#(Enemy,Player)>5 Then
Enemy_IsFight=0
Enemy_FightFrame#=0
EndIf
UpdateWorld
RenderWorld
Text 5,5,Player_Health
Text 5,25,"Dis:"+EntityDistance#(Enemy,Player)+" | Fight: "+Enemy_IsFight+" | Sum: "+Enemy_FightFrame#
Flip
Wend
Пояснение:
Игрок двигается от врага, тот к игроку.
Если враг дальше игрока на 3 метра, двигается к нему.
Если враг ближе к игроку чем 3 метра - начинает размах (Enemy_FightFrame#)
Проходит 75 мксек - происходит удар.
Если враг ближе к игроку на 4 метра наносится урон.
Если игрок дальше от врага на 5 метров - удар отменяется.
|
В отличии от глупых боёв в ЛА2 - есть проверка "игрок во время удара вблизи или нет".
(В Ла2 и ВоВ: если враг размахнулся, Ты хоть за 5 метров убегай - он тебя считай побил)
Нужно будет добавить модель противника (с мечом или кулаками). И ориентироваться по анимации.
|