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 |
был не раз
Сейчас нет на сайте
| Большое спасибо.
|
|
| |