| 
| denis79513 | Дата: Среда, 13 Октября 2010, 13:09 | Сообщение # 1 |  | был не раз Сейчас нет на сайте | Я начал изучать язык Blitz3D так как он не требует серьезных навыков, прост в изучении и дает неплохие возможности, превым делом, решил реализовать управление автомобилем, как обычно создается тело (машина (cub)), плоскось (plane), и освещение с камерой. В моем случае, Матина, то есь куб имеет переменную car.
 Самое начало, делаем так, как обычно:
 
 Code  If KeyDown(200) MoveEntity car,0,0,.1 (клавиши вверх - движение вперед)
 If KeyDown(208) MoveEntity car,0,0,-.1 (клавиша вниз- движение назад)
 If KeyDown(203) TurnEntity car,0,1,0 (клавиша влево - поворот влево)
 If KeyDown(205) TurnEntity car,0,-1,0 (клавиша вправо - поворот вправо)
 
С передним ходом все OK. нажимаем влево, вперед - движется налево и вперед.
 Но дело в том, что возникают проблемы с задним ходом, то есть если игрок нажимает влево и назад, то машина должна двигаться влево, назад, а здесь она движется вправо, назад.
 Поэтому я решил ввести переменную, которая будет стоять вместо градусов поворота. Например Cr:
 
 Code  If KeyDown(200) MoveEntity car,0,0,.cr
 
Тогда нам нужно прописать, что если игрок нажимает (вперед) + (влево или вправо) то cr=1
 а если он нажимает (вназадеред) + (влево или вправо) то cr=-1 (то есть в обратную сторону).
 Полностью мой код теперь выглядит так:
 
 Code  Graphics3D 1280,1024,32,1
 
 SetBuffer BackBuffer()
 
 cr%=5
 lit=CreateLight()
 car=CreateCube()
 EntityColor car,0,255,0
 cam=CreateCamera(car)
 plan=CreatePlane(10)
 
 EntityColor plan,0,0,255
 
 PositionEntity plan,0,-1,5
 PositionEntity cam,0,3,-7
 
 If
 KeyDown(208)
 And
 KeyDown(203)
 Or
 KeyDown(205)
 Then
 cr=5
 Else
 cr=-5
 EndIf
 
 Repeat
 If KeyDown(200) MoveEntity car,0,0,.1
 If KeyDown(208) MoveEntity car,0,0,-.1
 If KeyDown(203) TurnEntity car,0,1,0
 If KeyDown(205) TurnEntity car,0,-1,0
 UpdateWorld
 RenderWorld
 Flip
 Until KeyHit(1)
 End
 
Помогите найти ошибку, при попытке запуска, вылетает: "Expecting Expression" заранее спасибо!
 |  |  |  |  | 
| 
| Trelan | Дата: Среда, 13 Октября 2010, 14:14 | Сообщение # 2 |  |   участник Сейчас нет на сайте | Ошибка в этом: 
 Quote (denis79513) If KeyDown(208)
 And
 KeyDown(203)
 Or
 KeyDown(205)
 Then
 cr=5
 Else
 cr=-5
 EndIf
 Чтобы ее не было сделайте так:   If KeyDown(208) And KeyDown(203) Or KeyDown(205) Then cr=5
 Else
 cr=-5
 EndIf
 
 
    Мои игры: Planet Lander
 Escape From Hospital (в разработке)
 
 
 Сообщение отредактировал Trelan - Среда, 13 Октября 2010, 14:17 |  |  |  |  | 
| 
| denis79513 | Дата: Среда, 13 Октября 2010, 18:18 | Сообщение # 3 |  | был не раз Сейчас нет на сайте | Большое спасибо. |  |  |  |  |