Flash 如何使对象反弹? for(变量k:int=0;k
只有当x小于0时,才会使其反弹…因此发生的情况是,对象撞到墙上(x小于0)会移回刚刚超过0(实际上是0,因为如果它小于0,则会反弹到0)然后再次开始向墙的方向移动,直到小于0(几乎立即)。因此,您将看到对象刚好卡在墙上(x=0) 我倾向于这样做的一种方法是存储一个不同的方向变量,它是+1或-1。一旦对象通过0(x maxX){ 方向=-1; } //乘以方向以正确移动 moneyVector[i].x+=moneyVector[i].dx*方向; moneyVector[i].y+=moneyVector[i].dy; if(moneyVector[i].hitTestObject(字符)) { Config.CurrentStage.removeChild(moneyVector[i]); moneyVector.拼接(i,1); moneyscore+=400; moneytext.text=“Money:+moneyscore.toString(); 钱=新钱; money.dx=随机范围(-5,5); money.dy=随机范围(-5,5); money.x=x[选择PawnPoint()]; money.y=moneysourceY; Config.CurrentStage.addChild(货币); 推(钱); } } }Flash 如何使对象反弹? for(变量k:int=0;k,flash,Flash,只有当x小于0时,才会使其反弹…因此发生的情况是,对象撞到墙上(x小于0)会移回刚刚超过0(实际上是0,因为如果它小于0,则会反弹到0)然后再次开始向墙的方向移动,直到小于0(几乎立即)。因此,您将看到对象刚好卡在墙上(x=0) 我倾向于这样做的一种方法是存储一个不同的方向变量,它是+1或-1。一旦对象通过0(x maxX){ 方向=-1; } //乘以方向以正确移动 moneyVector[i].x+=moneyVector[i].dx*方向; moneyVector[i].y+=moneyV
别忘了将方向存储为每个moneyVector索引的一个变量,并设置你想要的maxX,而不是我的“maxX”我知道了,我知道问题所在。你是对的,我只是在X小于0时使它反弹。我应该将速度和方向改为原始值的负值,而不是moneyVector[I].x=moneyVector[i].x+-1*moneyVector[i].dx
for (var k:int = 0; k < 1; k++)
{
money = new Money;
money.x = X[chooseSpawnPoint()];
money.y = moneysourceY;
money.dx = RandomRange(-5,5);
money.dy = RandomRange(-5,5);
Config.CurrentStage.addChild(money);
moneyVector.push(money);
}
private function Update(evt:Event)
{
for (var i:int = 0; i < moneyVector.length; i++)
{
moneyVector[i].x += moneyVector[i].dx;
moneyVector[i].y += moneyVector[i].dy;
if (moneyVector[i].hitTestObject(character))
{
Config.CurrentStage.removeChild(moneyVector[i]);
moneyVector.splice(i, 1);
moneyscore += 400;
moneytext.text = "Money : " + moneyscore.toString();
money = new Money ;
money.dx = RandomRange(-5,5);
money.dy = RandomRange(-5,5);
money.x = X[chooseSpawnPoint()];
money.y = moneysourceY;
Config.CurrentStage.addChild(money);
moneyVector.push(money);
}
if ( moneyVector[i].x < 0 ) {
moneyVector[i].x = moneyVector[i].x + -1 * moneyVector[i].dx //<-- cannot bounce back
}
}
}
private function Update(evt:Event)
{
for (var i:int = 0; i < moneyVector.length; i++)
{
// Figure out what direction to move
if ( moneyVector[i].x < 0 ) {
direction = 1;
} else if(moneyVector[i].x > maxX) {
direction = -1;
}
// Multiply by direction to move the correct way
moneyVector[i].x += moneyVector[i].dx * direction;
moneyVector[i].y += moneyVector[i].dy;
if (moneyVector[i].hitTestObject(character))
{
Config.CurrentStage.removeChild(moneyVector[i]);
moneyVector.splice(i, 1);
moneyscore += 400;
moneytext.text = "Money : " + moneyscore.toString();
money = new Money ;
money.dx = RandomRange(-5,5);
money.dy = RandomRange(-5,5);
money.x = X[chooseSpawnPoint()];
money.y = moneysourceY;
Config.CurrentStage.addChild(money);
moneyVector.push(money);
}
}
}