2013-05-23 29 views
18

Tôi đang phát triển trò chơi trên bảng bằng cách sử dụng Ball, trong cocos3d. Trong đó tôi đã đưa ra một hành động trong touchevent. Tôi đang in vị trí vào bảng điều khiển bằng cách sử dụng NSLog().Vị trí nút mạng không được cập nhật, trong cocos3d

Đây là mã

-(void) touchEvent: (uint) touchType at: (CGPoint) touchPoint {  

CCActionInterval *BounceAction1=[CC3MoveTo actionWithDuration:0.1 moveTo:cc3v(0.0, -5.0, -0.7)]; 

switch (touchType) { 

    case kCCTouchBegan: 

     [Ball runAction:BounceAction1]; 

     NSLog(@"Location of x=%f and y=%f", Ball.globalLocation.x, Ball.globalLocation.y); 

    break; 
} 

Ở đây, 'bóng' là một MeshNode. Vị trí của nó có nguồn gốc cc3v(0.0, 0.0, 0.0).

Khi tôi chạy và chạm vào, tôi thấy bóng di chuyển đến vị trí đã chỉ định. Nhưng tôi nhận được vị trí của Ball là:

Location of x=0.000000 and y=0.000000 

Khi tôi chạm lần nữa, tôi thấy bóng không di chuyển (vì nó đã di chuyển đến vị trí đã chỉ định). Nhưng sau đó nó hiển thị vị trí của Ball là:

Location of x=0.000000 and y=-6.000000 

Tại sao tôi không thể tìm thấy vị trí lần đầu tiên?

+0

Bởi vì, vị trí ban đầu cho quả bóng sẽ là (0, 0) – rptwsthi

+0

Thực tế vấn đề của tôi là, sau khi chuyển động tôi cũng nhận được vị trí không thay đổi, tức là có được vị trí bắt đầu. –

+0

Sau đó, bạn phải chạm vào nút phụ của bóng đổ của nút của bạn – rptwsthi

Trả lời

1

Dựa trên mã của bạn, tôi cho rằng vấn đề là BounceAction1 thực hiện với thời lượng là 0.1 và do đó thuộc tính tĩnh của Ball chưa được cập nhật khi câu lệnh NSLog thực hiện. Để kiểm tra điều này, hãy thử chèn một giấc ngủ ngay trước câu lệnh NSLog.

Các vấn đề liên quan