【问题标题】:My sprite comes out from the axis Y我的精灵从 Y 轴出来
【发布时间】:2012-09-15 16:14:30
【问题描述】:

我已经创建了一个敌人在屏幕上随机移动的动作,但有时它会从 Y 轴移动出来,我该如何让精灵在移动时不会从 Y 轴出来? ???

这是随机移动精灵的代码:

[敌人 runAction:[CCSequence 动作:[CCMoveBy actionWithDuration:2.0 位置:ccp(-winSize.width*0.4, 0)], [CCMoveBy actionWithDuration:randomValueBetween(1.0, 0.3) 位置:ccp(randomValueBetween(winSize.width*0.2,-winSize.width*0.2), randomValueBetween(winSize.height*0.2, -winSize.height*0.2))], [CCDelayTime actionWithDuration:0.5], [CCMoveBy actionWithDuration:randomValueBetween(1.0, 0.3) 位置:ccp(randomValueBetween(winSize.width*0.2,-winSize.width*0.2), randomValueBetween(winSize.height*0.2, -winSize.height*0.2))], [CCDelayTime actionWithDuration:0.5], [CCMoveBy actionWithDuration:randomValueBetween(1.0, 0.3) 位置:ccp(randomValueBetween(winSize.width*0.2,-winSize.width*0.2), randomValueBetween(winSize.height*0.2, -winSize.height*0.2))], [CCDelayTime actionWithDuration:0.5], [CCMoveBy actionWithDuration:randomValueBetween(1.0, 0.3) 位置:ccp(randomValueBetween(winSize.width*0.2,-winSize.width*0.2), randomValueBetween(winSize.height*0.2, -winSize.height*0.2))], [CCDelayTime actionWithDuration:0.5], [CCMoveBy actionWithDuration:randomValueBetween(1.0, 0.3) 位置:ccp(randomValueBetween(winSize.width*0.2,-winSize.width*0.2), randomValueBetween(winSize.height*0.2, -winSize.height*0.2))], [CCDelayTime actionWithDuration:0.5], [CCMoveBy actionWithDuration:randomValueBetween(1.0, 0.3) 位置:ccp(randomValueBetween(-winSize.width*0.3,winSize.width*0.3), randomValueBetween(winSize.height*0.3, -winSize.height*0.3))], [CCDelayTime actionWithDuration:0.5], [CCMoveBy actionWithDuration:randomValueBetween(1.0, 0.3) 位置:ccp(randomValueBetween(-winSize.width*0.2,winSize.width*0.2), randomValueBetween(winSize.height*0.2, -winSize.height*0.2))], [CCDelayTime actionWithDuration:0.5], [CCMoveBy actionWithDuration:randomValueBetween(1.0, 0.3) 位置:ccp(randomValueBetween(-winSize.width*0.3,winSize.width*0.3), randomValueBetween(winSize.height*0.3, -winSize.height*0.3))], [CCDelayTime actionWithDuration:0.5], [CCMoveBy actionWithDuration:randomValueBetween(1.0, 0.3) 位置:ccp(randomValueBetween(-winSize.width*0.2,winSize.width*0.2), randomValueBetween(winSize.height*0.2, -winSize.height*0.2))], [CCDelayTime actionWithDuration:0.5], [CCMoveBy actionWithDuration:randomValueBetween(1.0, 0.3) 位置:ccp(randomValueBetween(-winSize.width*0.3,winSize.width*0.3), randomValueBetween(winSize.height*0.3, -winSize.height*0.3))], [CCDelayTime actionWithDuration:0.5], [CCMoveBy actionWithDuration:randomValueBetween(1.0, 0.3) 位置:ccp(randomValueBetween(-winSize.width*0.2,winSize.width*0.2), randomValueBetween(winSize.height*0.2, -winSize.height*0.2))], [CCDelayTime actionWithDuration:0.5], [CCMoveBy actionWithDuration:2.0 位置:ccp(-winSize.width*1.5, 0)], [CCCallFuncN actionWithTarget:self 选择器:@selector(invisNode:)], nil]];

【问题讨论】:

  • 我不明白这个问题。 “从 Y 轴出来”是什么意思?究竟会发生什么,您预计会发生什么?
  • 我想说,有时候,当精灵移动时,它会离开 y 轴。我希望精灵不会从屏幕上消失。我希望当精灵到达屏幕的顶部或底部时它会回来。

标签: ios cocos2d-iphone


【解决方案1】:

您无法通过 CCMoveBy 和随机距离阻止精灵离开屏幕。随机偏移总有可能以这样的方式加起来,使精灵沿着任何轴移动很长的距离。

堆叠多个随机 CCMoveBy 动作并不能让您控制精灵最终会在哪里结束,或者它沿途移动到哪里。

您应该将序列拆分为单独的“等待和移动”序列。这样,您可以生成随机偏移,并在创建 CCMoveBy 之前将它们添加到精灵位置以测试生成的位置是否会在屏幕外。在这种情况下,请将值限制在屏幕内的某个位置。

PS:

[CCCallFuncN actionWithTarget:self selector:@selector(invisNode:)]

如果这只将精灵设置为不可见,您可以简单地用 CCHide 动作替换它。

【讨论】:

  • 如何在屏幕中夹住精灵,在屏幕中随意移动精灵?
猜你喜欢
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多