पुशबटन इंजन लेसन # 4: कस्टम कंपोनेंट में नियंत्रण जोड़ना

उद्घाटन टिप्पणी



छवि

आज के ट्यूटोरियल में, हम यह देखेंगे कि आप पुशबटन इंजन में कीबोर्ड द्वारा संचालित ऑब्जेक्ट कैसे बना सकते हैं। यदि आप बस PushButton Engine (PBE) से शुरू कर रहे हैं, तो आपको PBE ट्यूटोरियल श्रंखला से पाठ # 1 , पाठ # 2, और पाठ # 3 पढ़ना उपयोगी हो सकता है। इसके अलावा, आप हमेशा आधिकारिक वेबसाइट पर मूल लेखों में पाठ पढ़ सकते हैं।

कीबोर्ड नियंत्रण


"मनुष्य, सब्जियां या लौकिक धूल, हम सभी दूर से एक अदृश्य संगीतकार द्वारा बजाई गई रहस्यमयी धुन पर नृत्य करते हैं।" - अल्बर्ट आइंस्टीन।

इस पाठ का उद्देश्य कस्टम घटकों को बनाना है जो स्क्रीन पर एक साधारण आकृति को स्थानांतरित करने के लिए कीबोर्ड का उपयोग करते हैं।

पिछले पाठों की तरह, इस पाठ में चरणों की एक श्रृंखला है: छोटे अंतराल जो छोटे लक्ष्यों को प्राप्त करने पर ध्यान केंद्रित करेंगे। यह दृष्टिकोण PusButton Engine की समझ को गति देगा।

यदि आप अभी PBE सीखना शुरू कर रहे हैं तो यह पाठ उपयोगी होगा। लेकिन इसके बावजूद, यह आवश्यक नहीं है कि आप प्रोग्रामिंग में नए हों।

सामग्री:
- पाठ शुरू करने के लिए फाइलें
- पाठ का परिचय
- घटक निर्माण
- काम के परिणामों की जाँच करना
- निष्कर्ष

पाठ शुरू करने के लिए फाइलें


सबक सीखना शुरू करने के लिए, आप स्टार्टर प्रोजेक्ट को डाउनलोड कर सकते हैं और इसे पाठ के लिए आधार के रूप में उपयोग कर सकते हैं:

सबक शुरू किट

यदि आप पाठ के लिए स्टार्टर किट से .swf फ़ाइल संकलित करते हैं, तो आपको स्क्रीन के केंद्र में एक नीला सर्कल होना चाहिए।

पूर्ण पाठ के लिए स्रोत फ़ाइलें लेख के अंत में उपलब्ध होंगी।

पाठ परिचय


पिछले पाठ में, हमने सीखा कि एक सरल नियंत्रक घटक कैसे बनाया जाए जो एक व्यवहार मॉडल के आधार पर एक चरित्र को नियंत्रित करता है। अब, हम कीस्ट्रोक्स जोड़ेंगे जो खिलाड़ी द्वारा नियंत्रित आंदोलनों को जोड़ देगा।

उपयोगकर्ता इनपुट को सुव्यवस्थित करने के लिए, PBE PBE.isKeyDown () विधि प्रदान करता है, जो यह देखने के लिए जाँच करता है कि क्या कोई बटन दबाया गया है।

अधिक जटिल इनपुट सेटिंग्स के लिए, जैसे कि कीबोर्ड शॉर्टकट एक्शन या बटन के लिए विशेष ईवेंट भेजना, PBE InputManager और InputMap क्लासेस प्रदान करता है। ये कक्षाएं अधिक "मजबूत" कार्यक्षमता प्रदान करती हैं, लेकिन, आमतौर पर, सरल गेम बनाते समय उनकी आवश्यकता नहीं होती है। इस पाठ में हम उनकी चर्चा नहीं करेंगे।

घटक निर्माण


पिछले पाठ की तरह, हम फिर से 3 सरल घटकों के साथ एक सरल दृश्य बनाएंगे: एक रेंडर घटक, एक "स्थानिक" घटक और एक नियंत्रक घटक। और, फिर से, हम एक कस्टम घटक बनाएंगे जो टिकटकम्पोनेंट वर्ग से विरासत में मिलेगा , जिसमें हर फ्रेम पर खुद को "अपडेट" करने की क्षमता है।

यह नया घटक जाँच करेगा कि क्या बटन बाएँ या दाएँ दबाए गए हैं, और यदि उनमें से एक को दबाया जाता है, तो घटक ऑब्जेक्ट को स्थानांतरित करेगा।

InputKey वर्ग बड़ी संख्या में बटनों के साथ काम करने की क्षमता प्रदान करता है:

// InputKey
InputKey.LEFT
//
InputKey.stringToKey( "LEFT" )


* This source code was highlighted with Source Code Highlighter .


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

// isKeyDown() , , (true — , false — )
if (PBE.isKeyDown(InputKey.SPACE))
{
//
Logger.print( this , "Hey, cheer up!" );
}


* This source code was highlighted with Source Code Highlighter .


वर्तमान में किस कुंजी को दबाया जाता है, इसके आधार पर, हम स्थानिक घटक की स्थिति को बदलते हैं। पिछले पाठ की तरह, हम संपत्ति नियम श्रेणी के माध्यम से स्थानिक घटक स्थिति चर का संदर्भ प्राप्त करेंगे, हमारे नियमों के अनुसार परिवर्तन करेंगे और इस चर के लिए एक नया मान निर्धारित करेंगे।

नियम जिसके अनुसार हम वस्तु की स्थिति को बदलेंगे:

1) यदि सही कुंजी दबाया जाता है: ऑब्जेक्ट को दाईं ओर ले जाएं
2) यदि "वाम" कुंजी दबाया जाता है: ऑब्जेक्ट को बाईं ओर ले जाएं
3) यदि ऑब्जेक्ट फ्लैश ड्राइव के दाहिने किनारे से आगे निकल गया है: ऑब्जेक्ट को फ्लैश ड्राइव के दाहिने किनारे पर लौटाएं
4) यदि ऑब्जेक्ट फ्लैश ड्राइव के बाएं किनारे से आगे निकल गया है: ऑब्जेक्ट को फ्लैश ड्राइव के बाएं किनारे पर लौटाएं

अब हमें पता चला है कि चीजों को कैसे काम करना चाहिए, हम इसे कोड में लागू कर सकते हैं। नीचे दिए गए कोड से मिलान करने के लिए HeroControllerComponent वर्ग को संशोधित करें:

फ़ाइल पथ: /src/HeroControllerComponent.as
package
{
import com.pblabs.engine.PBE;
import com.pblabs.engine.components.TickedComponent;
import com.pblabs.engine.core.InputKey;
import com.pblabs.engine.entity.PropertyReference;

import flash.geom.Point;

/**
* , «» onTick()
*/
public class HeroControllerComponent extends TickedComponent
{
// ,
public var positionReference:PropertyReference;

public function HeroControllerComponent()
{

}

/**
* , .
*
* @param deltaTime , .
*/
public override function onTick(deltaTime:Number): void
{
//
var position:Point = owner.getProperty(positionReference);

// , «»
if (PBE.isKeyDown(InputKey.RIGHT))
{
//
position.x += 15;
}

// , «»
if (PBE.isKeyDown(InputKey.LEFT))
{
//
position.x -= 15;
}

//
if (position.x > 375)
{
//
position.x = 375;

//
} else if (position.x < -375)
{
//
position.x = -375;
}

//
owner.setProperty(positionReference, position);
}
}
}


* This source code was highlighted with Source Code Highlighter .


काम के परिणामों की जाँच करना


फ्लैश ड्राइव संकलित करने के बाद, आपको एक .swf फ़ाइल देखनी चाहिए, जिसकी सामग्री नीचे स्क्रीनशॉट की तरह दिखनी चाहिए:

छवि

निष्कर्ष


बधाई हो, आपने पाठ 4 पूरा कर लिया है और सीख लिया है कि उपयोगकर्ता इनपुट प्रतिक्रियाओं को कैसे जोड़ा जाए।

आप उन सभी फाइलों को डाउनलोड कर सकते हैं जिनका उपयोग नीचे दिए गए लिंक से पाठ में किया गया था।

सबक स्रोतों के साथ पुरालेख

Source: https://habr.com/ru/post/In100680/


All Articles