전 세계에 두 개의 시체가 있습니다. 첫 번째는 플레이어가 움직이는 것입니다. 두 번째 동안 적군이 플레이어를 공격합니다. 나는 플레이어를위한 방패를 구현하기를 원합니다. 적이 플레이어에게 닿으면 플레이어의 선 속도에 영향을 미치지 않고 계속 움직입니다.Box2D : 특정 몸체의 힘을 무시하면서 몸을 시뮬레이션하십시오.
필자는 제 3 몸을 운동 학적으로 플레이어에 바인딩하려고 시도했지만 (플레이어보다 약간 크다), 선형 임펄스가 플레이어에 적용될 때 어떤 이유로 벽에 달라 붙어있었습니다.
그래서 나는 선수에게 강제로 멈추고 선수의 거꾸로 된 선 속도를 적에게 적용하려고했습니다. 내 선수가 안정적이지만 움직이지 않으면 잘 작동합니다.
동적 인 모든 기능을 계속 움직일 수 있지만 어떻게 적의 히트의 영향을받지 않는지와 같은 기구학적인 몸체로 만들 수 있습니까?
이것은 선수가 선회 한 후에 선 속도가 0이되어서 정상적으로 작동 할 때 코드를 시도했지만 실제로는 깨끗한 해결책이 아닙니다.
실제로 기구학 체가 있고 applyLinearImpulse를 사용할 수 있습니까? 운동기구와 관련된 문제는 내 플레이어가 단순히 벽을 무시하는 것입니다. 그러나 플레이어가 벽을 치는 것처럼 플레이어가 튀어 나와야하는 것을 제외하고는 벽과 다른 모든 것들과 충돌해야합니다.
func postSolve(contact: b2Contact, impulse: b2ContactImpulse) {
...
if player.ShieldActive {
let playervelocity = player.getLinearVelocity()
player.forceStop // sets linearvelocity to zero including angularvelocity
enemy.applyLinearImpulse(playervelocity.invert()*0.1) // apply the inverted velocity of the player with a scalar so the enemy moves aways like it hit a wall
}
...
}