2008-12-01 15 views
16

यह एक लंबे अवकाश सप्ताहांत था, इसलिए मैं कोडिंग बग फिर से हो गया और चारों ओर खेलना शुरू कर दिया:platformer 2 डी भौतिकी

Mario http://gfilter.net/junk/tileengine.jpg

मैं एक बुनियादी टाइल इंजन लिखा था, लेकिन यह प्रयास कभी नहीं होने से पहले, मैं कर रहा हूँ गुरुत्वाकर्षण के लिए यथार्थवादी भौतिकी को उत्तेजित करने और कार्यान्वित करने के साथ वास्तव में संघर्ष करने के लिए संघर्ष कर रहा है।

किसी अन्य गेम शौक लेखकों के लिए, क्या आप मुझे इस दृष्टिकोण के लिए सबसे अच्छे रास्ते पर कुछ पैदल यात्रा की ओर इंगित कर सकते हैं?

अद्यतन:

मैंने सोचा कि मैं एक प्रगति रिपोर्ट का हिस्सा हैं:

http://www.youtube.com/watch?v=-RKNQ2UiiLY < - लड़ाई में खेल

इसकी अभी भी वास्तव में गाड़ी है, लेकिन टक्कर पता लगाने ज्यादातर काम कर रहा है, मैं मैंने कुछ अन्य विशेषताओं पर काम करना शुरू कर दिया है (जैसे ब्लॉक को बंप करना (बग नोटिस करना) और दुश्मनों के साथ बातचीत करना)।

मारियो अभी भी चंद्रमा पर चलने जैसा चलता है, मैं इन स्थिरांकों का उपयोग कर रहा हूं, और यथार्थवाद के लिए उन्हें ट्विक करने के लिए कोई सलाह?

const float AirDrag = 1.00f; 
    const float GroundFriction = .97f; 
    const float Gravity = 0.8f; 
+8

वीडियो बंद है! –

उत्तर

1

यह एक चक्कर हो सकता है लेकिन XNA 3.0 से Platformer स्टार्टर किट, कि भौतिकी और बुनियादी टकराव का पता लगाने की तरह सामान शामिल प्रयास करें। आपको XNA के बाहर काम करने के लिए सामान बदलने की आवश्यकता होगी, लेकिन यह रॉकेट विज्ञान नहीं है।

XNAGS 3.0 download

5

डाउनलोड FarseerPhysics इंजन, यह कैसे काम करता http://www.codeplex.com/FarseerPhysics मुझे लगता है कि सबसे अच्छी बात XNA/Silverlight के लिए उपलब्ध है पर एक नजर है!

2

ग्रेविटी आसान है:

const gravity = ... ; // pixels per timestep (eg. video frame) squared 
// while in freefall, each timestep: 
y_velocity += gravity; 
y_pos += y_velocity; 

मन आप, सबसे 2d मंच खेल मैं यथार्थवादी गुरुत्वाकर्षण नहीं है खेला है। बस जो कुछ भी मजेदार बनाता है!

+4

तकनीकी रूप से, मुझे लगता है कि आपको पहले स्थिति अपडेट करनी चाहिए (इसलिए यह पिछले टाइमस्टेप की गति का उपयोग करती है), फिर वेग अपडेट करें। – gnovice

+0

@gnovice और भी तकनीकी रूप से, – super

-6

कभी GameMaker के बारे में सुना?

+7

वर्लेट देखें, जो इसमें से सभी मजा लेता है। – FlySwat

+0

आप अपने जीवन को कठिन तरीके से काम करना चाहते हैं, मेरे अतिथि – wjhplano

2

jnrdev कुछ सहायता का हो सकता है। इसमें टाइल टकराव/प्रतिक्रिया और ढलान शामिल हैं। यह अब तक का सबसे अच्छा कोड नहीं है, लेकिन यह काम पूरा हो जाता है।

+0

उस लिंक के लिए धन्यवाद। मैं इसे भी अनुशंसा करने जा रहा था लेकिन यह मेरे बुकमार्क्स में वर्षों से खो गया है :) – grepsedawk

0

मुझे नहीं पता कि आप भौतिकी मॉडल के लिए क्या उपयोग कर रहे हैं, लेकिन fluid drag का उपयोग करने वाले भौतिकी मॉडल को हाल ही में another SO question में संबोधित किया गया था। मैं अपने उत्तर में जो कुछ भी दिया है उसे दोहराना नहीं चाहूंगा, मैं बस link to it करूंगा।

संक्षेप में, प्रश्न के लिए ओपी किसी ऑब्जेक्ट को अधिकतम वेग से अधिकतम वेग में तेजी लाने के लिए चाहता था। मैं दो अलग-अलग प्रकार के ड्रैग के लिए समय के एक समारोह के रूप में मॉडलिंग वेग के लिए कुछ व्युत्पन्नों के माध्यम से चला गया। आपकी स्थिति थोड़ा अलग हो सकती है, इसलिए इस्तेमाल किए गए इंटीग्रल के अलग-अलग रूप हो सकते हैं या विभिन्न प्रारंभिक स्थितियों के साथ हल करने की आवश्यकता हो सकती है, लेकिन उम्मीद है कि मेरा उत्तर आपको कुछ सूचनात्मक दिशाओं में इंगित करेगा।

2

http://www.metanetsoftware.com/technique/tutorialA.html और http://www.metanetsoftware.com/technique/tutorialB.html पर वास्तव में उपयोगी 2-डी प्लेटफार्म ट्यूटोरियल हैं। मुझे लगता है कि उन्हें एसओ पर कहीं और दूसरों द्वारा संदर्भित किया गया है। वे टकराव का पता लगाने और प्रतिक्रिया, रेकास्टिंग, विभिन्न अनुकूलन तकनीकों इत्यादि को कवर करते हैं और उन सभी के लिए सिद्धांत के बारे में अच्छी व्याख्या करते हैं (जैसे मेरे) जो कम गणितीय रूप से इच्छुक हैं। यह कठोर शरीर गतिशीलता जैसी चीजें नहीं जाता है, लेकिन मुझे नहीं लगता कि आपको उस गेम के प्रकार की आवश्यकता होगी जो आप लिख रहे हैं (हालांकि अगर आप इस तरह की चीजें जोड़ते हैं तो यह निश्चित रूप से अच्छा होगा .. ।)

+0

इसे देखकर, मैंने सुझाए गए ट्यूटोरियल जेक मल्ग्रे द्वारा उल्लिखित जेएनआरडीवी के समान सामान को कवर किया। मैंने अभी तक jnrdev नहीं पढ़ा है (प्रारंभिक नज़र से परे) इसलिए वास्तव में उनकी तुलना नहीं कर सकता है। – bm212

0

आपके बग को कई ब्लॉकों के साथ टक्कर मारने के साथ, आप केवल उस ब्लॉक को टक्कर मारकर ठीक कर सकते हैं जो खिलाड़ियों के साथ सबसे गठबंधन है, या कम से कम ऑफसेट है। सुनिश्चित करें कि इसे केवल एक दिशा तक सीमित न करें। ब्लॉक वास्तव में मारियो में किसी भी दिशा से टक्कर लगी जा सकती है। (एक ही गेम में ग्राउंड पाउंड करके, या ड्रिल-स्पिन-चीज) (एक खोल का उपयोग करके साइड)

0
UIGraphicsBeginImageContext(images.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    UIColor *color = [UIColor whiteColor]; 
    [color setFill]; 

    CGContextTranslateCTM(context, 1, images.size.height); 
    CGContextScaleCTM(context, 1.0, -1.0); 
    CGContextSetBlendMode(context, kCGBlendModeDestinationOver); 
    CGRect rect = CGRectMake(0.0, 0.0, images.size.width, images.size.height); 
    CGContextDrawImage(context, rect, images.CGImage); 
    CGContextClipToMask(context, rect, images.CGImage); 
    CGContextAddRect(context, rect); 
    CGContextDrawPath(context, kCGPathFill); 
    images = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
संबंधित मुद्दे