2016-09-27 5 views
1

저는 cocos2dx로 풀 게임을 만들고 있습니다. 첫째, 내가 설정이 함께 edgeBOX를이 PhysicsMaterial(1.0f, 1.0f, 0.8f) 그리고 매개 변수 다음 physicsBody->setLinearDamping(0.3);Cocos2dx - 속도 = 0.0을 설정할 수 없습니다.

를 추가하여 이러한 2 공 PhysicsMaterial(1.0f, 1.0f, 0.5f) 업데이트 기능에

, 내가 (지상 마찰을 같은) 중력없이 시간 공 시간을 느리게합니다 각 볼의 속도가 0,0

auto MV = 15; 
auto v1 = player1->getPhysicsBody()->getVelocity(); 
auto v2 = player2->getPhysicsBody()->getVelocity(); 
if (v1.x > MV || v1.x < -MV || 
    v1.y > MV || v1.y < -MV) { 
} else if(v1 != Vec2(0,0)) { 
    player1->getPhysicsBody()->setVelocity(Vec2(0,0)); 
    CCLOG("sx 1 : %f %f",v1.x,v1.y); 
} 

if (v2.x > MV || v2.x < -MV || 
    v2.y > MV || v2.y < -MV) { 
} else if(v2 != Vec2(0,0)) { 
    player2->getPhysicsBody()->setVelocity(Vec2(0,0)); 
    CCLOG("sx 2 : %f %f",v2.x,v2.y); 
} 

모두 잘 작동에 속도를 재설정, 15 이하에 도달하면 업데이트 기능에

, 내가 볼 서하는 경우를 제외하고, 최소 속도를 설정 벽이나 옆에. 이 물체에 작은 파란색 접착제가 보입니다. 이것은 접촉이 이루어진 때입니다.

그리고 이러한 상황에서는 속도를 0,0으로 설정할 수 없습니다. 속도가 끊임없이 변화하는 힘이 있다고 생각합니다. 아래 이미지를 보면 파란 접착제를 볼 수 있으며 영원히처럼 속도 = 0.0으로 설정할 수 있습니다.

enter image description here

답변

0

첫째 제로로 속도를 설정하기 전에 힘을 재설정 : player2->getPhysicsBody()->resetForces();

는 또한 중력이 몸이 계속 이동 원인이 될 수 있습니다. 전체 물리 세계에서 중력을 0으로 설정할 수 있습니다.

auto scene = Scene::createWithPhysics(); 
scene->getPhysicsWorld()->setGravity(Vec2(0, 0)); 

하거나 하나의 특정 신체 : 예를 들어

player2->getPhysicsBody()->setGravityEnable(false); 

하거나 속도 기능을 사용자 정의 할 수 있습니다

void customVelFunc(cpBody *body, cpVect gravity, cpFloat damping, cpFloat dt) 
{ 
    cpBodyUpdateVelocity(body, cpvzero, damping, dt); 
} 
: customVelFunc는 다음과 같이 정의 할 수

#include "chipmunk.h" 

cocos2d::PhysicsBody * pBody = player2->getPhysicsBody(); 
pBody->getCPBody()->velocity_func = customVelFunc; 

+0

처음에 나는 장애인 물리 세계에서 중력. resetFor하려고했으나 작동하지 않았습니다. 이 일은 연락이 이루어질 때 발생합니다. – TomSawyer

+0

@TomSawyer는 이전의 조언과 더불어 'PhysicsMaterial (1.f, 0, 0)'에 대한 보상 및 마찰을 설정하려고 시도하거나 충돌하는 경우 물리 개체의 동작을 제어하기 위해 사용자 지정 콜리 전 콜백을 설정할 수도 있습니다. –

+0

나는 이미 마찰과 밀도를 0으로 설정하려고 시도했다. 튀는 것을 만들어야하기 때문에 되돌림은 0이 될 수 없다. 속도를 0,0으로 설정 한 후에도 공은 여전히 ​​약간 움직입니다. – TomSawyer