我正在尝试为我的游戏创建一个简单的方法但是我不太确定如何实现它。我现在有一个浮点数,从.1开始,我希望它在某个时间范围内增加到1。
让我们说这段时间是0.5秒。现在很明显,这个方法将在更新循环上调用,以便每次都增加它,但是我不知道从哪里开始。
我讨厌发布没有任何代码的问题,但我只是不知道它的后勤问题。我会将结果数除以deltaTime吗?任何建议将不胜感激。
答案 0 :(得分:1)
如果此float是CCNode后代的属性,请尝试CCActionTween:这里是文档的摘录(版本2.1):
/** CCActionTween
CCActionTween is an action that lets you update any property of an object.
For example, if you want to modify the "width" property of a target from 200 to 300 in 2
seconds, then:
id modifyWidth = [CCActionTween actionWithDuration:2 key:@"width" from:200 to:300];
[target runAction:modifyWidth];
Another example: CCScaleTo action could be rewriten using CCPropertyAction: (sic) CCActionTween
// scaleA and scaleB are equivalents
id scaleA = [CCScaleTo actionWithDuration:2 scale:3];
id scaleB = [CCActionTween actionWithDuration:2 key:@"scale" from:1 to:3];
@since v0.99.2
*/
编辑:
示例:假设您有一个Cannon类,它派生自CCNode(如下面的.h所示)
@interface Cannon:CCNode {
float _bulletInitialVelocity;
float _firingRate;
}
@property (nonatomic, readwrite) float bulletInitialVelocity;
@property (nonatomic, readwrite) float firingRate;
@end
in the cannon logic, you could
CCTweenAction *fr = [CCTweenAction actionWithDuration:60.0 key:@"firingRate" from:.25 to:.75];
[self runAction:fr];
这可以在60秒的时间内提高射击率。你可以为子弹的初始速度做同样的事情。请注意,这些属性不是CCNode属性,而是您通过扩展CCNode自己创建的属性。我把它写成旧样式,这样你就可以看到这些属性实际上是由iVar“支持”的。