Тёмная тема
Никак не могу заставить гг стаять на движущейся платформе, проблема не с отсутствием трения, а с LinearVelocity.
Самый нормальный вариант реализовать передвижение, в тч по платформе:
var vel = edge.GetLinearVelocity(); if ( keys[87] && ( sensorListener( edge) & 0x010)){ //w vel.y = -10; } // если нажата клавиша, до этого не нажималась, гг не упирается слева if ( keys[65] && !edgeData.left && !( sensorListener( edge) & 0x100)) { vel.x -= 5; // двигаемся влево edgeData.left = true; } // клавишу отпустили, до этого была нажата if ( !keys[65] && edgeData.left) { vel.x += 5; // LinearVelocity как было edgeData.left = false; } // если нажата клавиша, до этого не нажималась, гг не упирается справа if ( keys[68] && !edgeData.right && !( sensorListener( edge) & 0x001)) { vel.x += 5; // двигаемся вправо edgeData.right = true; } if ( !keys[68] && edgeData.right) { vel.x -= 5; edgeData.right = false; } /* было if (keys[65] || keys[68]) { // left/right arrows body.SetAwake(true); if (keys[65] && !(sensorListener(edge) & 0x100)) vel.x = -5; else if (keys[68] && !(sensorListener(edge) & 0x001)) vel.x = 5; } else { vel.x = 0; }*/ edge.SetLinearVelocity( vel);
Yadro
> Самый нормальный вариант
нет, это не самый нормальный вариант, это чёрт знает что. назначаешь платформе бесконечную массу и присваиваешь ей необходимую скорость.
xD ну платформа b2_kinematicBody со своей скоростью, сам код описывает поведение гг.
Обнуление скорости сделал только после отпускания клавиши, теперь почти все как надо.
Тема в архиве.