z通过方法旋转对象 - 精灵工具包

时间:2014-03-03 16:28:31

标签: objective-c function

为什么我不能在带有(id)引用的对象上使用zRotation?我可能错误地构建了这个问题,在这种情况下我很抱歉。

这是代码。

-(void)moveAlien:(id)alien :(CGPoint)startPos :(CGPoint)stopPos :(float) speed
{
    float katetX = startPos.x - stopPos.x;
    float katetY = startPos.y - stopPos.y;

    //
    alien.zRotation = atan(katetX/katetY); //This doesn't work
    //



    SKAction *moveAlien = [SKAction moveTo:stopPos duration:speed];
    [alien runAction:moveAlien];
}
  • 在'__strong id'
  • 类型的对象上找不到属性'zRotation'

我做错了什么?我怎样才能使它发挥作用?

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为idNSObject*相同。并且NSObject*没有名为zRotation的属性。您可能想要转换变量,例如:

((MyAlienClass *)alien).zRotation = atan(katetX/katetY);

甚至更好,让参数更具体一点:

-(void)moveAlien:(MyAlienClass *)alien :(CGPoint)startPos :(CGPoint)stopPos :(float) speed

<强> PS: 在objectiveC中,您通常使用函数名称描述参数,如下所示:

-(void)moveAlien:(MyAlienClass *)alien from:(CGPoint)startPos to:(CGPoint)stopPos withSpeed:(float)speed

因为这样的电话看起来会更好:

[this moveAlien:alien from:CGPointMake(0,0) to:CGPointMake(10,0) withSpeed:3.5]

比:

[this moveAlien:alien :CGPointMake(0,0) :CGPointMake(10,0) :3.5]