Автор Тема: Странное поведение в BGE  (Прочитано 36169 раз)

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #165 : 03 Май 2018, 19:10:34 »
... "ихтамнет", это не про эти следы? скорее это именно subj, поэтому дополнительно нужно проверить находилось ли колесо в воздухе между двумя точками ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #166 : 03 Май 2018, 20:58:03 »
... "ихтамнет", это не про эти следы? скорее это именно subj, поэтому дополнительно нужно проверить находилось ли колесо в воздухе между двумя точками ...
Скорее "ихтанедолжнобыть". Что за зверь такой "subj"?
Николай, я не понимаю о каких ты точках пытаешь меня.
В файле я расставил принты, на мой взгляд они пишут все необходимые точки.
3D-курсор установил примерно на конечной точке возможного проявления следа.
В наборе окон "По умолчанию", запусти BGE в пользовательском окне и увидишь эти три следа которых не может быть, а в консоли их координаты.
Последние три следа с большей разницей по оси Z, чем предыдущие.
Что за выкрутас, не пойму.

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #167 : 04 Май 2018, 03:08:50 »
>> Скорее "ихтанедолжнобыть". Что за зверь такой "subj"?
http://lurkmore.to/%D0%A1%D0%B0%D0%B1%D0%B6

>> Николай, я не понимаю о каких ты точках пытаешь меня.
... v0 и v1, по сути старое и новое положение колеса/следа ...

>> Что за выкрутас, не пойму.
... мы не ожидаем проявление коллизии в этом месте, но по каким-то причинам оно происходит ...
... 1) либо искать причины недолжного поведения, 2) или ставить костыль (например на "Последние три следа с большей разницей по оси Z, чем предыдущие.") ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #168 : 04 Май 2018, 09:18:13 »
... мы не ожидаем проявление коллизии в этом месте, но по каким-то причинам оно происходит ...
... 1) либо искать причины недолжного поведения, 2) или ставить костыль (например на "Последние три следа с большей разницей по оси Z, чем предыдущие.") ...
А я всё думал и гадал что такое на вашем языке "костыль".
Склонен к первому варианту, ведь причина какая-то есть. Видно какая-то "корявинка" в коде себя проявляет.

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #169 : 05 Май 2018, 10:22:45 »
... ещё один вариант во вложении для обсуждения ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #170 : 06 Май 2018, 10:06:30 »
Каким образом выполняется вызов подпрограмм?
Николай, ты мне не ответил или я прозевал ответ?
Вообще в Python существует такое понятие как подпрограмма?
Есть блок кода, что-то выполняющий, к которому возможно обратиться из разных участков кода. Подозреваю что с помощью def, но не представляю как это грамотно оформить вплоть до отступов.

Вариант во вложении сейчас посмотрю.

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #171 : 06 Май 2018, 10:38:41 »
Николай, ещё момент. Стрелкой на изображении во вложении я указываю на тень от колеса. Пока я буду "играть в угадайку" с кодом, может укажешь на причину сохранения этой тени, какой-то наворот в BGE или что-то с материалом или светом в свойствах?

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #172 : 06 Май 2018, 11:26:45 »
>> может укажешь на причину сохранения этой тени
... это тень от следа, логично её отключить ...

>> Есть блок кода, что-то выполняющий, к которому возможно обратиться из разных участков кода.
Код: python
#определение
def sq(x):
     return x*x

#использование
a = sq(3)
print(sq(2))

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #173 : 07 Май 2018, 10:01:07 »
>> может укажешь на причину сохранения этой тени
... это тень от следа, логично её отключить ...
Да, действительно это тень от следа. Взгляни на изображение во вложении.
Я не думаю, что мне придётся использовать след в таком виде и с таким высоким требованием к нему. Так, для общего понятия, я уточнял
Цитировать
>> Есть блок кода, что-то выполняющий, к которому возможно обратиться из разных участков кода.
Код: python
#определение
def sq(x):
     return x*x

#использование
a = sq(3)
print(sq(2))
С возможностью использования части кода как функции понятно. Однако мой интерес несколько иной. Мне интересна возможность многократного использования части кода из разных мест кода.
Немного не корректным примером может служить такая ситуация:
Есть десятка полтора колёс, находящихся в разных местах холмистой поверхности катящихся в разных направлениях и оставляющих свои следы.
Для рисования текстурированных следов необходима приводимая тобою часть кода. Для рисования следов с деформированием сетки поверхности потребуется другая часть кода. Для рисования какого-то другого вида следа потребуется третья часть кода. Короче, подобно бейсиковским go to и go sub что-то есть?

Оффлайн Samovar

  • Житель
Re: Странное поведение в BGE
« Ответ #174 : 07 Май 2018, 10:10:51 »
Цитировать
Короче, подобно бейсиковским go to и go sub что-то есть?
Это давно считается дурным тоном и путаницей, потому вряд ли... (сейчас такое только на ассемблере)
Я не вполне шарю в Python, но думаю, что когда ты объявил функции в BGE даже разными скриптами, то они становятся доступны в других скриптах во время исполнения...
надо пробовать...
« Последнее редактирование: 07 Май 2018, 10:52:45 от Samovar »

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #175 : 07 Май 2018, 13:26:33 »
>> Короче, подобно бейсиковским go to и go sub что-то есть?
>> Это давно считается дурным тоном и путаницей, потому вряд ли...
... скорее всего да ...

>> Для рисования текстурированных следов необходима приводимая тобою часть кода. Для рисования следов с деформированием сетки поверхности потребуется другая часть кода. Для рисования какого-то другого вида следа потребуется третья часть кода.

... использовать словарь ...
http://rupython.com/switch-python-116.html

... или назначить для разных объектов свои функции-обработчики  ...

Код: python
def p1():
    print("p1")

def p2():
    print("p2")

def p3():
    print("p3")
   

a = p1
a()

a = p2
a()

a = p3
a()

Оффлайн Striver

  • Житель
  • недоинженер, полупрограммист
    • http://striver00.ru
Re: Странное поведение в BGE
« Ответ #176 : 07 Май 2018, 14:07:17 »
Цитировать
http://rupython.com/switch-python-116.html
Страшная ссылка. Даже не знаю, что страшнее, слитый в одну строку и потому убитый питоновский код, или текст, автоматически переведённый на псевдорусский язык...

Цитировать
Короче, подобно бейсиковским go to и go sub что-то есть?
А как бы ты в Бейсике выбирал, где это самое go to поставить? Наверняка перед ним будет некое условие, что-то вроде
Цитировать
if a=4 then
   goto 150
if a=6 then
   goto 180
Ну так и в Питоне можно по-простому написать
Цитировать
if a==4:
    p1()
if a==6:
    p2()
где p1 и p2 - ранее определённые функции (например, как в коде от Николай Николаев)
Если таких веток условий совсем много (хотя бы больше 3), то можно диспетчеризацию через словарь сделать, но пока лучше по-простому через ifы сделай.

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #177 : 07 Май 2018, 17:30:31 »
Цитировать
http://rupython.com/switch-python-116.html
Страшная ссылка. Даже не знаю, что страшнее, слитый в одну строку и потому убитый питоновский код, или текст, автоматически переведённый на псевдорусский язык...
Да уж... А человек тратил своё время...

Samovar, Николай, Striver, спасибо за пояснения. Вроде понял. Пока нужды такой нет, просто интересно было, но при случае, для закрепления, обязательно опробую.

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #178 : 07 Май 2018, 21:02:15 »
Тут такой вопрос нарисовался, строка
bge.logic.getCurrentScene().objects['ground'].collisionCallbacks.append(callback)
определяет объект столкнувшийся с объектом ground. Код располагает поверх ground'а объект Sled. При повторном следовании по колее, эта строка опять ведь будет видеть объект ground. А, может эта строка определять столкновение с несколькими объектами, например с ground и Sled. Для чего это надо пока не знаю, но интересно, есть такая возможность или нет?

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #179 : 08 Май 2018, 12:44:44 »
if not 'w0' in db:
        db['w0'] = w1.copy()
        return
Инструкция  return здесь для чего? Что будет без неё?

 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

1 (1).png
Скачано: 4874
Автор: LEXA ANЭGROWND
blender.png
Скачано: 4856
Автор: ipv2007
4.png
Скачано: 4846
Автор: hiroyukiss
2.png
Скачано: 4871
Автор: hiroyukiss

Скачано: 4964
Автор: Dilifa12