В cocos2d-spritebuilder 3.4 Я создал свой физический мир и свой плеер, как и многие официальные примеры.iOS cocos2D Бурундук Скорость тела недействительна
self.sprite.physicsBody = [CCPhysicsBody bodyWithCircleOfRadius:10 andCenter:self.anchorPoint];
self.sprite.physicsBody.type = CCPhysicsBodyTypeDynamic;
etc...
Так что, когда я пытаюсь переместить мой спрайт вправо, например, с
[self.sprite.physicsBody applyImpulse: CGPointMake(32,0)];
мое приложение собирается в аварии сообщать об этом:
Aborting due to Chipmunk error: Body's velocity is invalid.
Failed condition: v.x == v.x && v.y == v.y
Source:.../Source/libs/cocos2d-iphone/external/Chipmunk/src/cpBody.c:106
Бурундук источника имеют:
-(void)applyImpulse:(CGPoint)impulse { _body.velocity = cpvadd(_body.velocity, cpvmult(CCP_TO_CPV(impulse), 1.0f/_body.mass));}
Итак, я знал MASS была выставиться по умолчанию для 1.0f, но я хочу, чтобы попытаться установить это значение вручную ..):
self.sprite.physicsBody.mass = 1.0f
Та же ошибка, одни и те же результаты ... Но если я пытаюсь установить:
self.sprite.physicsBody.body.mass = 1.0f
Он отлично работает. Итак, каковы различия между этими двумя параметрами? Зачем применятьImpulse взять только body.mass?
Хотя я не физик, то ясно, что вы путаете скорость с импульсным (с учетом вы использовали скорость в вашем 'applyImpulse' вызова). Я ожидаю, что вам нужно будет экспериментировать с разными значениями импульса до тех пор, пока тело не начнет вести себя так, как вы ожидали (возможно, изменив значения импульсов с течением времени, исходя из поведения пользователя). Начните с чтения [этого] (http://www.physicsclassroom.com/class/momentum/Lesson-1/Momentum-and-Impulse-Connection). – trojanfoe
Сэр, проблема не является импульсом. Игра работает хорошо, мой вопрос ясен и реферирует к источникам бурундука, о двух переменных массы вместо одного. –