|
3D-программирование Вопросы, касающиеся программирования 3D мира |
29.08.2007, 05:11
|
#1
|
Оператор ЭВМ
Регистрация: 23.08.2007
Сообщений: 27
Написано 0 полезных сообщений (для 0 пользователей)
|
Новичёк не понимает... Помогите.
У меня проблема с игрой, я перечитал весь ворум но вобще запутался,
Я хочу чтоб моя машинка начинала набирать скорость постепенно и также сбавляла скорость, а не при нажатии кнопки она двигается, а при опускании становится колом.
Если это можно организовать при помощи команд, то пожалуйста обьясните внятно каие команды куда ставить... А то я вобще запутался. Не откажите в помощи.
|
(Offline)
|
|
29.08.2007, 10:43
|
#2
|
ПроЭктировщик
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений (для 0 пользователей)
|
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)
|
(Offline)
|
|
29.08.2007, 12:35
|
#3
|
Модератор
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений (для 1,694 пользователей)
|
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]
Вроде всё описал... Гг
|
(Offline)
|
|
29.08.2007, 12:41
|
#4
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Новичёк не понимает... Помогите.
If KeyDown(20 Then ;Если нажата стрелка вниз
If Speed > 0 Then Speed = Speed - .02 ;И если скорость больше 0 , то уменьшаем скорость
EndIf
|
можно зделать задний ход с максимальной скоростью 5:
If KeyDown(20 Then ;Если нажата стрелка вниз
If Speed > -5 Then Speed = Speed - .02 ;И если скорость больше -5 , то уменьшаем скорость
EndIf
|
(Offline)
|
|
29.08.2007, 12:47
|
#5
|
Модератор
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений (для 1,694 пользователей)
|
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(20 Then
If Speed > -5 Then Speed = Speed - .02 ;Если скорость больше -5 , то уменьшаем ее...
EndIf
[/blitz]
|
(Offline)
|
|
29.08.2007, 17:00
|
#6
|
Оператор ЭВМ
Регистрация: 23.08.2007
Сообщений: 27
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Новичёк не понимает... Помогите.
Спасибо всем! Тепер я всё понял.
А можно такойже вопрос тока насчёт спидометра.?
Хотябы программно
|
(Offline)
|
|
29.08.2007, 17:13
|
#7
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Новичёк не понимает... Помогите.
Ограничения будут не точны, хоть и наверное более производительны, хотя при миллионе таких операций за цикл только будет разница.
Лучше сперва извенять скорость а только потом проверять если большие или меньше, ставить соответствующее. Но это зависит от переменной на сколько увеличивается скорость. И это так, тонкости
|
(Offline)
|
|
29.08.2007, 17:17
|
#8
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Новичёк не понимает... Помогите.
А можно такойже вопрос тока насчёт спидометра.?
|
т.е. ты хочеш что бы у тебя стрелка показывала какая скорость ??
а если без стрелки то просто: text 20,20,"скорость "+speed
|
(Offline)
|
|
29.08.2007, 17:36
|
#9
|
Оператор ЭВМ
Регистрация: 23.08.2007
Сообщений: 27
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Новичёк не понимает... Помогите.
Сообщение от IGR
т.е. ты хочеш что бы у тебя стрелка показывала какая скорость ??
а если без стрелки то просто: text 20,20,"скорость "+speed
|
Мне пожалуйста как по легче и поточнее, но я предупреждаю что я со спрайтами не очень дружу.
|
(Offline)
|
|
29.08.2007, 17:49
|
#10
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Новичёк не понимает... Помогите.
легче и намного производительней будет вывести значение скорости ввиде текста как я тебе показал , но если ты хочеш зделать спидометр, то создавай стрелку и поварачевай ее в зависимости от значения скорости !!
|
(Offline)
|
|
29.08.2007, 17:58
|
#11
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: Новичёк не понимает... Помогите.
|
(Offline)
|
|
29.08.2007, 18:05
|
#12
|
Оператор ЭВМ
Регистрация: 23.08.2007
Сообщений: 27
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Новичёк не понимает... Помогите.
Сообщение от IGR
легче и намного производительней будет вывести значение скорости ввиде текста как я тебе показал , но если ты хочеш зделать спидометр, то создавай стрелку и поварачевай ее в зависимости от значения скорости !!
|
Чего-то не получается ввиде текста, а можеш чуть-чуть по понятней(ну что куда ставить и писать). Заранее спасибо.
|
(Offline)
|
|
29.08.2007, 18:16
|
#13
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Новичёк не понимает... Помогите.
напиши после renderworld()
и перед flip 0
это:
text 20,20,"speed :"+speed
получится так:
renderworld()
text 20,20,"speed :"+speed
flip 0
|
(Offline)
|
|
29.08.2007, 18:57
|
#14
|
Оператор ЭВМ
Регистрация: 23.08.2007
Сообщений: 27
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Новичёк не понимает... Помогите.
Сообщение от IGR
напиши после renderworld()
и перед flip 0
это:
text 20,20,"speed :"+speed
получится так:
renderworld()
text 20,20,"speed :"+speed
flip 0
|
Впринципе появилась надпись "speed:0"
но там где 0 ни чего не показывает...(((
|
(Offline)
|
|
29.08.2007, 18:58
|
#15
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Новичёк не понимает... Помогите.
Cheetos, тогда перед Graphics3D напиши: Global speed#
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:48.
|