forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Новичёк не понимает... Помогите. (http://forum.boolean.name/showthread.php?t=4280)

Cheetos 29.08.2007 05:11

Новичёк не понимает... Помогите.
 
У меня проблема с игрой, я перечитал весь ворум но вобще запутался,
Я хочу чтоб моя машинка начинала набирать скорость постепенно и также сбавляла скорость, а не при нажатии кнопки она двигается, а при опускании становится колом.
Если это можно организовать при помощи команд, то пожалуйста обьясните внятно каие команды куда ставить... А то я вобще запутался.:''(( Не откажите в помощи.

Maestro 29.08.2007 10:43

Re: Новичёк не понимает... Помогите.
 
Код:

Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Global moveZ#

    ; create car
    car = CreateCube()

    ; create camera
    campivot = CreatePivot()
    cam = CreateCamera(campivot)
    PositionEntity cam,0,120,0
    PointEntity  cam,campivot

    ;create light
    lit = CreateLight(campivot)
    PositionEntity lit,0,60,0
    PointEntity lit,campivot

Repeat

MoveEntity car,0,0,moveZ#

If KeyDown(17) Then
    moveZ = moveZ + .02
Else
    moveZ = moveZ - .01
EndIf
If moveZ < 0 Then MoveZ = 0
If KeyDown(30) Then TurnEntity car,0,2,0
If KeyDown(32) Then TurnEntity car,0,-2,0

UpdateWorld()
RenderWorld()

Flip
Until KeyHit(1)


Данил 29.08.2007 12:35

Re: Новичёк не понимает... Помогите.
 
Создай переменную Speed#

В цикле ставь команду MoveEntity car , 0 , 0 , Speed. Эта команда у тебя будет посмтоянно двигать твой car на speed вперёд...

И там, где у тебя функции нажатия клавиш измени на

[blitz]
If KeyDown(200) Then
Speed = Speed + .02 ;Если нажата стрелка вверх, то прибавляем скорость
Else
Speed = Speed - .01 ;Если не нажата, то уменьшаем...
EndIf

If KeyDown(208) Then ;Если нажата стрелка вниз
If Speed > 0 Then Speed = Speed - .02 ;И если скорость больше 0 , то уменьшаем скорость
EndIf
[/blitz]

Вроде всё описал... Гг

IGR 29.08.2007 12:41

Re: Новичёк не понимает... Помогите.
 
Цитата:

If KeyDown(208) Then ;Если нажата стрелка вниз
If Speed > 0 Then Speed = Speed - .02 ;И если скорость больше 0 , то уменьшаем скорость
EndIf

можно зделать задний ход с максимальной скоростью 5:
If KeyDown(208) Then ;Если нажата стрелка вниз
If Speed > -5 Then Speed = Speed - .02 ;И если скорость больше -5 , то уменьшаем скорость
EndIf

Данил 29.08.2007 12:47

Re: Новичёк не понимает... Помогите.
 
Ну да.. чтобы задний ход был... и, наверно, надо поставить ограничение.. ща исправлю...

==>>><<<==
Исправил...

[blitz]
If KeyDown(200) Then
If Speed< 40 Then Speed = Speed + .02 ; Если скорость меньше 40 (то бишь максимальной.. гг) , то прибавляем её...
Else
If Speed > 0 Then Speed = Speed - .01 ; Если скорость больше 0 и клавиша не нажата, то постепенно уменьшаем скорость...
EndIf

If KeyDown(208) Then
If Speed > -5 Then Speed = Speed - .02 ;Если скорость больше -5 , то уменьшаем ее...
EndIf
[/blitz]

Cheetos 29.08.2007 17:00

Re: Новичёк не понимает... Помогите.
 
Спасибо всем! Тепер я всё понял.
А можно такойже вопрос тока насчёт спидометра.?
Хотябы программно

moka 29.08.2007 17:13

Re: Новичёк не понимает... Помогите.
 
Ограничения будут не точны, хоть и наверное более производительны, хотя при миллионе таких операций за цикл только будет разница.
Лучше сперва извенять скорость а только потом проверять если большие или меньше, ставить соответствующее. Но это зависит от переменной на сколько увеличивается скорость. И это так, тонкости ;)

IGR 29.08.2007 17:17

Re: Новичёк не понимает... Помогите.
 
Цитата:

А можно такойже вопрос тока насчёт спидометра.?
т.е. ты хочеш что бы у тебя стрелка показывала какая скорость ??

а если без стрелки то просто: text 20,20,"скорость "+speed

Cheetos 29.08.2007 17:36

Re: Новичёк не понимает... Помогите.
 
Цитата:

Сообщение от IGR
т.е. ты хочеш что бы у тебя стрелка показывала какая скорость ??

а если без стрелки то просто: text 20,20,"скорость "+speed

Мне пожалуйста как по легче и поточнее, но я предупреждаю что я со спрайтами не очень дружу.:pardon:

IGR 29.08.2007 17:49

Re: Новичёк не понимает... Помогите.
 
легче и намного производительней будет вывести значение скорости ввиде текста как я тебе показал , но если ты хочеш зделать спидометр, то создавай стрелку и поварачевай ее в зависимости от значения скорости !!

johnk 29.08.2007 17:58

Re: Новичёк не понимает... Помогите.
 
Cheetos
http://www.boolean.name/showthread.php?t=3940
Это про то, как сделать спидометр.

Cheetos 29.08.2007 18:05

Re: Новичёк не понимает... Помогите.
 
Цитата:

Сообщение от IGR
легче и намного производительней будет вывести значение скорости ввиде текста как я тебе показал , но если ты хочеш зделать спидометр, то создавай стрелку и поварачевай ее в зависимости от значения скорости !!

Чего-то не получается ввиде текста, а можеш чуть-чуть по понятней(ну что куда ставить и писать). Заранее спасибо.

IGR 29.08.2007 18:16

Re: Новичёк не понимает... Помогите.
 
напиши после renderworld()
и перед flip 0
это:
text 20,20,"speed :"+speed

получится так:
renderworld()
text 20,20,"speed :"+speed
flip 0

Cheetos 29.08.2007 18:57

Re: Новичёк не понимает... Помогите.
 
Цитата:

Сообщение от IGR
напиши после renderworld()
и перед flip 0
это:
text 20,20,"speed :"+speed

получится так:
renderworld()
text 20,20,"speed :"+speed
flip 0

Впринципе появилась надпись "speed:0"
но там где 0 ни чего не показывает...(((

moka 29.08.2007 18:58

Re: Новичёк не понимает... Помогите.
 
Cheetos, тогда перед Graphics3D напиши: Global speed#


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot