Objective c 从触摸位置创建脉冲向量
想象我有一个球。用户触摸它,球就会上升。目前,脉冲方向是静态的Objective c 从触摸位置创建脉冲向量,objective-c,cocos2d-iphone,Objective C,Cocos2d Iphone,想象我有一个球。用户触摸它,球就会上升。目前,脉冲方向是静态的 ball->ApplyLinearImpulse(b2Vec2(20.0f,100.0f),ball->GetWorldCenter()); 及 是脉冲向量。我想要一个随机产生的脉冲向量。我认为这应该通过选择触球位置来实现 这个问题更多的是关于数学的。如何根据触摸位置计算随机脉冲向量?有什么想法吗?简单的解决方案是创建一个从球的位置到触球位置的向量,并使用该向量的缩放版本作为您的脉冲向量 编辑: 一些伪代码来计算这个向
ball->ApplyLinearImpulse(b2Vec2(20.0f,100.0f),ball->GetWorldCenter());
及
是脉冲向量。我想要一个随机产生的脉冲向量。我认为这应该通过选择触球位置来实现
这个问题更多的是关于数学的。如何根据触摸位置计算随机脉冲向量?有什么想法吗?简单的解决方案是创建一个从球的位置到触球位置的向量,并使用该向量的缩放版本作为您的脉冲向量 编辑: 一些伪代码来计算这个向量
-(void) createImpulse(Vector touchPoint)
{
//this is now a vector pointing from the touch point to the ball
Vector diff = [ball->GetWorldCenter() vectorSubtract:touchPoint];
//Generate a random float from 1/2 to 2
float scale = randFloat(0.5f, 2.0f);
//Scale the vector by the float
Vector impulse = [diff scaleBy:scale];
ball->ApplyLinearImpulse(b2Vec2(impulse.x, impulse.y), ball->GetWorldCenter() );
}
如果是随机的,为什么它需要与触摸位置相关?很容易创建一个伪随机向量,但是给定一个相同的向量,它是相同的,但我认为它只是创建了更多的工作而没有任何收益(对于人来说,几乎不可能触摸到完全相同的点)。这与我能得到的真实代码差不多,不知道你的框架比我已经从你的代码。
-(void) createImpulse(Vector touchPoint)
{
//this is now a vector pointing from the touch point to the ball
Vector diff = [ball->GetWorldCenter() vectorSubtract:touchPoint];
//Generate a random float from 1/2 to 2
float scale = randFloat(0.5f, 2.0f);
//Scale the vector by the float
Vector impulse = [diff scaleBy:scale];
ball->ApplyLinearImpulse(b2Vec2(impulse.x, impulse.y), ball->GetWorldCenter() );
}