|
3D-программирование Вопросы, касающиеся программирования 3D мира |
03.07.2015, 23:15
|
#1
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Условия не работают правильно. В чём может быть причина?
Приветствую.
Есть код, где идут проверки на нажатия клавиш. И там подусловия, т.к как останавливать звуки я не знаю. где:
если x или y игрока превышает предел, или наоборот меньше нуля. так как используется else if, то else происходить должно если все условия не верны. тут же наоборот, условия не верны, а я иду вниз. по крайней мере, я слышу звук ходьбы, хоть x меньше 0 и я жму идти назад.
Помогите пожалуйста разобраться.
Вот весь код:
Graphics3D 800,600,16,2
SetBuffer BackBuffer()
player = CreateSphere()
cam = CreateCamera(player)
enemy = CreateCube()
PositionEntity enemy,0,0,20
stepsound = LoadSound("step.wav")
While Not KeyHit(1)
If KeyHit(200) Then
MoveEntity player,0,0,0.1
If EntityY#(player) > 40 Then
EntityY# = 40
Else If EntityX#(player) > 40 Then
EntityX# = 40
Else
PlaySound(stepsound)
EndIf
EndIf
If KeyHit(208) Then
MoveEntity player,0,0,-0.1
If EntityY#(player) < 0 Then
EntityY# = 0
Else If EntityX#(player) < 0 Then
EntityX# = 0
Else
PlaySound(stepsound)
EndIf
EndIf
If KeyHit(203) Then TurnEntity player,0,1,0
If KeyHit(205) Then TurnEntity player,0,-1,0
Wend
End
Заранее благодарен!
Последний раз редактировалось SBJoker, 04.07.2015 в 00:32.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
03.07.2015, 23:17
|
#2
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
Сделал ElseIf, тож не канает.
|
(Offline)
|
|
04.07.2015, 00:14
|
#3
|
Социал-сычевист
Регистрация: 24.06.2011
Сообщений: 611
Написано 342 полезных сообщений (для 1,359 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
KeyHit замени на KeyDown
|
(Offline)
|
|
04.07.2015, 07:39
|
#4
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
А причем тут это?
мне и надо клавишу не даржать а просто нажимать.
И от этого нич не изменилось. всеравно условия не работают.
|
(Offline)
|
|
05.07.2015, 00:45
|
#5
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
Ребят у помогите плз.
по поводу KeyDown, там нет таймера, который определяет сколько шагов в 1 сек делает допустим. и выходит так, что воспроизводиться звук оччччень много раз. вот сами попробуйте. но это от условий не зависит.
|
(Offline)
|
|
06.07.2015, 01:19
|
#6
|
Разработчик
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений (для 220 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
Интересно и как у тебя по KeyHit игрок будет двигаться? KeyHit выполнит однократное нажатие клавиши и все, далее даже если ты клавишу держишь условие уже выполнятся не будет так как это KeyHit, правильно тебе сказали заменить надо на KeyDown и условия у тебя не правильно выполнены. Заведи переменные. Как остановить звук есть в справке. Читай внимательней. Судя по темам ты не с одним языком не знаком.
__________________
|
(Offline)
|
|
06.07.2015, 09:43
|
#7
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
C#, pascal, python, Visual Basic.NET.
По поводу keyhit, но таймера я никак не сделаю, а при шагах мне зву кнужен. я и думаю жать однократно.
Условия вроде верны, или как я вот по другому, могу сделать условие больше x или y 50?
так:
if entiteX(player) > 50 or entityY(player)
я по любому не сделаю. т.к оно будет выполняться только тогда, когда 1 из них верно. А мне надо, что бы когда x равна пяти десяти делать x = 50, и так же с y. но никак не одновременно.
то есть, когда у меня будет x > 50, у меня и x и y будут равны 50. а так я не напишу
if entityX(player) > 50 then entityX(player) = 50
if entityY(player) > 50 then entityY(player) = 50
else
playSound(stepsound)
moveentity player,0,0,0.1
end if
т.к совершенно разные условия) ну то есть нужно это все в одном условии, чтоб для них else был одинаков
|
(Offline)
|
|
06.07.2015, 10:57
|
#8
|
Разработчик
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений (для 220 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
Вечером покажу как сделать. Но сомневаюсь я что ты с основами знаком
__________________
Последний раз редактировалось L-ee-X, 06.07.2015 в 12:34.
|
(Offline)
|
|
06.07.2015, 12:59
|
#9
|
Разработчик
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений (для 220 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
Держи бродяга
Graphics3D 800,600,16,2 SetBuffer BackBuffer()
run=LoadSound(вСТАВЬ СВОЙ ЗВУК ХОДЬБЫ) SoundVolume run, 0 LoopSound run runChannel = PlaySound (run)
Repeat running#= 0 UpdateWorld() RenderWorld()
If KeyDown(17) Then running = Rnd (0.35, 0.75) EndIf If running > 0 ChannelPitch runChannel, Rnd (80000, 14000) EndIf ChannelVolume runChannel, running
Until KeyHit(1)
End
__________________
|
(Offline)
|
|
06.07.2015, 14:47
|
#10
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
Вопрос был не про звук, а про условия. Но всеравно спасибо.
|
(Offline)
|
|
06.07.2015, 15:05
|
#11
|
Разработчик
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений (для 220 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
По крайней мере по твоему недокоду я понял только то, что ты хочешь сделать чтоб воспроизводился звук ходьбы при нажатие клавиши и при отпускание звук останавливался. Сам определись че надо то
__________________
|
(Offline)
|
|
06.07.2015, 16:35
|
#12
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
по поводу звуков я ответил просто в ответ про keydown.
Изначально был вопрос в коде где не правильное условие. там же я и описал алгоритм, а именно:
При движении, нужно проверить поочередно координаты x и y. если x > 50, то x = 50. если y > 50, то y = 50. в else т.е если условия не верны, воспроизводим звук и движемся.
|
(Offline)
|
|
06.07.2015, 16:37
|
#13
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
а то у меня получается так, что када он будет уператься в стенку не только будет проходить в нее, но и издавать звук шагов. 1. колиженс я не могу, т.к я его не понимаю и не привык, 2. кроме как elseif я не представляю себе как это сделать. а вроде как во всех бейсиках такая конструкция есть. по крайней мере припоминаю в VB.NET и PB.
|
(Offline)
|
|
06.07.2015, 16:40
|
#14
|
Разработчик
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений (для 220 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
Ну так очевидная ошибка в коде EntityY# = 40 это кто? И откуда он?
__________________
|
(Offline)
|
|
06.07.2015, 16:42
|
#15
|
Разработчик
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений (для 220 пользователей)
|
Ответ: Условия не работают правильно. В чём может быть причина?
Переменные задавай игроку.
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:32.
|