Tôi đang làm việc trên một trò chơi iphone. Trong đó tôi phải tạo ra những gợn sóng nước. Tôi không biết làm thế nào để có được điều đó. Tôi nghe nói rằng có thể được thực hiện với OpenGL. Tôi rất mới với khái niệm này. Bất kỳ ai có thể hướng dẫn tôi không?Làm thế nào để thực hiện gợn sóng nước?
Trả lời
Dưới đây là một số tài nguyên tôi thấy:
Language Agnostic 2d Water Ripple Algorithm
alt text http://freespace.virgin.net/hugo.elias/graphics/x_water4.gifalt text http://freespace.virgin.net/hugo.elias/graphics/ripples.gif
OpenGL Project with Water Ripples (Source)
alt text http://www.sulaco.co.za/opengl/water.jpg
Bạn cũng có thể muốn đu bởi GameDev's FAQ. Cuộn xuống phần "Water Rendering".
jk:
z=sin(x)+cos(y)
Nghiêm trọng hơn, không những Composer thạch anh cơ bản làm gợn sóng cho bạn là một trong những lớp hiệu ứng? Hoặc là đã được công bố chỉ dành cho iPhone 3.0 SDK?
Đó là một thói quen thực sự tốn kém. Nó hoàn toàn sẽ giết OpenGL trong một trò chơi. Tôi đoán anh ta muốn một hiệu ứng nước tốt, có nghĩa là thủ đoạn lập bản đồ kết cấu trường học cũ. – pestilence669
Tha thứ; Tôi biết. Tôi đã nói đùa. – dlamblin
Tôi đã tìm thấy mã nguồn của hiệu ứng gợn nước để theo mã để thực hiện vào dự án của bạn và giải quyết vấn đề của bạn.
nhập khẩu "HelloWorldLayer.h"
// HelloWorldLayer implementation
@implementation HelloWorldLayer
+(CCScene *) scene
{
// 'scene' is an autorelease object.
CCScene *scene = [CCScene node];
// 'layer' is an autorelease object.
HelloWorldLayer *layer = [HelloWorldLayer node];
// add layer as a child to scene
[scene addChild: layer];
// return the scene
return scene;
}
// on "init" you need to initialize your instance
-(id) init
{
if((self=[super init])) {
rippleImage = [ pgeRippleSprite ripplespriteWithFile:@"image_old.png" ];
[ self addChild:rippleImage ];
CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello Cocos2D Forum" fontName:@"Marker Felt" fontSize:16];
label.position = ccp(80 , 300);
[self addChild: label];
[ [ CCTouchDispatcher sharedDispatcher ] addTargetedDelegate:self priority:0 swallowsTouches:YES ];
// schedule update
[ self schedule:@selector(update:) ];
}
return self;
}
float runtime = 0;
-(BOOL)ccTouchBegan:(UITouch*)touch withEvent:(UIEvent*)event {
runtime = 0.1f;
[ self ccTouchMoved:touch withEvent:event ];
return(YES);
}
-(void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint pos;
if (runtime >= 0.1f) {
runtime -= 0.1f;
// get touch position and convert to screen coordinates
pos = [ touch locationInView: [ touch view ] ];
pos = [ [ CCDirector sharedDirector ] convertToGL:pos ];
// [ rippleImage addRipple:pos type:RIPPLE_TYPE_RUBBER strength:1.0f ];
[ rippleImage addRipple:pos type:RIPPLE_TYPE_WATER strength:2.0f ];
}
}
-(void)update:(ccTime)dt {
runtime += dt;
[ rippleImage update:dt ];
}
// on "dealloc" you need to release all your retained objects
- (void) dealloc
{
// in case you have something to dealloc, do it in this method
// in this particular example nothing needs to be released.
// cocos2d will automatically release all the children (Label)
// don't forget to call "super dealloc"
[super dealloc];
}
@end
- 1. Hiệu ứng gợn sóng hình nền động
- 2. Hiệu ứng gợn nước trên nền của trang web
- 3. Làm thế nào để thực hiện một cử chỉ sóng trong kinect?
- 4. Làm thế nào để thực hiện FST (hữu hạn Nhà nước đầu dò) thành phần
- 5. làm thế nào để thực hiện onRetainNonConfigurationInstance
- 6. Làm thế nào để thực hiện tích hợp số với hàm sóng dao động điều hòa lượng tử?
- 7. Làm thế nào để hiện đang thực hiện khu vực?
- 8. Làm cách nào để tạo ra nước trong Sea Stars?
- 9. Làm thế nào để thực hiện qt qgraphicsview quy mô để không ảnh hưởng đến mô hình stipple?
- 10. làm thế nào để "thực hiện" làm cho tập tin
- 11. làm thế nào để thực hiện lệnh SSH để timeout
- 12. GLSL cho các hiệu ứng bề mặt nước đơn giản
- 13. Phím nước ngoài trên bàn A -> B, và phím nước ngoài trên bàn B -> A. Làm thế nào được thực hiện?
- 14. Các khung thực thi của Máy Nhà nước nào cho C++ thực hiện ngữ nghĩa UML?
- 15. Làm thế nào để thực hiện lệnh shell trong Javascript
- 16. Làm thế nào để generics thực hiện cấu trúc?
- 17. PostgreSQL: Làm thế nào để thực hiện cardinality tối thiểu?
- 18. Làm thế nào để thực hiện IEnumerable <T>
- 19. Làm thế nào để thực hiện đúng HttpResponseRedirect ngược lại?
- 20. Làm thế nào để thực hiện SELECT MAX ở Django?
- 21. Làm thế nào để thực hiện mẫu flyweight trong php?
- 22. Làm thế nào để thực hiện tuần tự trong C++
- 23. Làm thế nào để thực hiện sqlcmd từ PowerShell?
- 24. Làm thế nào để thực hiện một menu bí mật
- 25. Làm thế nào để thực hiện hook_theme trong drupal 7?
- 26. Làm thế nào để thực hiện chức năng ajax onbeforeunload?
- 27. Làm thế nào để thực hiện quy tụ với trơn
- 28. Làm thế nào để thực hiện cập nhật hàng loạt?
- 29. Làm thế nào để thực hiện một div octogonal?
- 30. Làm thế nào để thực hiện Chuyển đổi Hough?
Bạn có đạt được hiệu quả, sau khi tất cả? – Thanks