Показать сообщение отдельно
Старый 12.01.2007, 15:51   #52
Progger_Leo
Разработчик
 
Регистрация: 09.01.2007
Сообщений: 217
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Исправьте код

Вот из одного учебника по блицу:

 
Физическая модель прыжка 
;Теперь добавим возможность прыжка. Для этого необходимо ввести 
; еще одну переменную - ry#, а также приращение dy#: 
ry# = -8
dy# = 0
 
;Затем, вводим условие: если нажата клавиша "пробел" и робот 
; стоит на земле (т.е. координата ry# = -8), то задаем импульс 
; - приращение, равное 2 
If KeyDown(57) Then
If ry# = -8 Then dy# = 2
End If
 
;Прибавляем к переменной ry# приращение: 
ry# = ry# + dy#
 
;Но, т. к. на робота должна действовать гравитация, мы должны 
; периодически уменьшать приращение на 0.1: 
dy# = dy# - 0.1
 
;Причем, координата робота ry# не должна быть меньше -8 
; (робот не должен опускаться ниже плоскости), поэтому 
; введем следующее условие: 
If ry# < -8 Then ry# = -8: dy# = 0
 
robot = LoadAnimMesh( "C:\media\standing.3ds" )
LoadAnimSeq robot, "C:\media\running.3ds"
ScaleEntity robot, 0.4, 0.4, 0.4
 
rx# = 10
ry# = -8
rz# = 0
dy# = 0
ang = 90
 
Repeat
 
PositionEntity robot, rx#, ry#, rz#
RotateEntity robot, 0, ang + 90, 0
PointEntity cam, robot
If KeyDown(57) Then
If ry# = -8 Then dy# = 2
End If
ry# = ry# + dy#
dy# = dy# - 0.1
If ry# < -8 Then ry# = -8: dy# = 0
 
If KeyDown(200)
If AnimSeq(robot) = 0 Then Animate robot, 1, 0.5, 1, 10
rx# = rx# + Cos(ang) * 0.5
rz# = rz# + Sin(ang) * 0.5
Else
If AnimSeq(robot)=1 Then Animate robot, 2, 1, 0, 10
End If
If KeyDown(203) Then ang = ang + 5
If KeyDown (205) Then ang = ang - 5
If KeyDown(1) Then Exit
UpdateWorld
RenderWorld
Flip
Forever
---
* правка jimon : так лутче imho
(Offline)
 
Ответить с цитированием