மரியோ பற்றிய விளையாட்டுகள். சூப்பர் மரியோ: புதிய நிலைகள்

தொடங்குவதற்கு, இந்த டுடோரியலுக்கான ஸ்டார்டர் திட்டத்தைப் பதிவிறக்கவும். அதைத் திறக்கவும், Xcode இல் திறக்கவும், அதை இயக்கவும். எமுலேட்டர் திரையில் இது போன்ற ஏதாவது தோன்றும்:

அது சரி - சலிப்பூட்டும் வெற்றுத் திரை! :] டுடோரியலைப் படிக்கும்போது அதை முழுமையாக நிரப்புவோம்
தேவையான அனைத்து படங்களும் ஒலிகளும் ஏற்கனவே தொடக்க திட்டத்தில் சேர்க்கப்பட்டுள்ளன. திட்டத்தின் உள்ளடக்கங்களைப் பார்ப்போம்:

  • விளையாட்டு கலை.ரேயின் மனைவி விக்கியின் இலவச கேம் ஆர்ட் பேக் அடங்கும்.
  • நிலை வரைபடம்.நான் உங்களுக்காக ஒரு நிலை வரைபடத்தை வரைந்தேன், SMB இல் முதல் நிலையிலிருந்து தொடங்கி.
  • சிறந்த ஒலி விளைவுகள்.எல்லாவற்றிற்கும் மேலாக, raywenderlich.com இலிருந்து ஒரு பயிற்சி! :]
  • CCLayer துணைப்பிரிவு.கேம்லெவல்லேயர் என்ற ஒரு வகுப்பு, இது b ஐ செயல்படுத்துகிறது நமது பெரும்பாலான இயற்பியல் இயந்திரம். இப்போது அது ஒரு கார்க் காலியாக இருந்தாலும். (ஆம், இந்தக் குழந்தை நிரம்பக் காத்திருக்கிறது!)
  • CCSprite துணைப்பிரிவு.கோலா லாஜிக் கொண்ட பிளேயர் என்ற வகுப்பு. இப்போது எங்கள் கோலா தூரத்தில் பறக்க முயற்சிக்கிறது!

இயற்பியல் இயந்திர அடிப்படைகள்

பிளாட்ஃபார்மர்கள் இயற்பியல் இயந்திரங்களின் அடிப்படையில் இயங்குகின்றன, மேலும் இந்த டுடோரியலில் நமது சொந்த இயற்பியல் இயந்திரத்தை எழுதுவோம்.
எங்கள் சொந்த இயந்திரத்தை எழுதுவதற்கு இரண்டு காரணங்கள் உள்ளன, அதே Box2D அல்லது Chipmink ஐப் பயன்படுத்தக்கூடாது:
  1. விரிவான அமைப்புகள்.ப்ளாட்ஃபார்மர்களின் ஜென்னை முழுமையாக அனுபவிக்க, உங்கள் எஞ்சினை எப்படி முழுமையாக தனிப்பயனாக்குவது என்பதை நீங்கள் கற்றுக் கொள்ள வேண்டும்.
  2. எளிமை. Box2D மற்றும் Chipmunk ஆகியவை நமக்குத் தேவையில்லாத தனிப்பயனாக்கக்கூடிய பல அம்சங்களைக் கொண்டுள்ளன. மேலும், வளங்கள் இருக்கும். நமது சொந்த இயந்திரம் நாம் அனுமதிக்கும் அளவுக்கு சரியாக சாப்பிடும்.
இயற்பியல் இயந்திரம் இரண்டு முக்கிய பணிகளைச் செய்கிறது:
  1. இயக்கத்தை உருவகப்படுத்துகிறது.ஒரு இயற்பியல் இயந்திரத்தின் முதல் வேலை ஈர்ப்பு, இயக்கம், குதித்தல் மற்றும் உராய்வு ஆகியவற்றின் எதிர் சக்திகளை உருவகப்படுத்துவதாகும்.
  2. மோதல்களைக் கண்டறிகிறது.இரண்டாவது பணி, பிளேயர் மற்றும் மட்டத்தில் உள்ள பிற பொருட்களுக்கு இடையேயான மோதல்களைக் கண்டறிவது.
உதாரணமாக, ஒரு தாவலின் போது, ​​மேல்நோக்கி இயக்கப்பட்ட ஒரு சக்தி நமது கோலா மீது செயல்படுகிறது. சிறிது நேரம் கழித்து, ஈர்ப்பு விசை தாவலின் விசையை மீறுகிறது, இது வேகத்தில் ஒரு உன்னதமான பரவளைய மாற்றத்தை அளிக்கிறது.
மோதல் கண்டறிதலைப் பயன்படுத்தி, புவியீர்ப்பு விசையின் கீழ் தரையில் செல்ல விரும்பும் ஒவ்வொரு முறையும் எங்கள் கோலாவை நிறுத்துவோம், மேலும் எங்கள் கோலா கூர்முனைகளில் அடியெடுத்து வைத்ததைக் கண்டறிவோம் (அச்சச்சோ!).
இது நடைமுறையில் எவ்வாறு செயல்படுகிறது என்பதைப் பார்ப்போம்.

இயற்பியல் இயந்திரத்தை உருவாக்குதல்

நாம் உருவாக்கும் இயற்பியல் இயந்திரத்தில், கோலா அதன் இயக்கங்களை விவரிக்கும் அதன் சொந்த மாறிகளைக் கொண்டிருக்கும்: வேகம், முடுக்கம் மற்றும் நிலை. இந்த மாறிகளைப் பயன்படுத்தி, எங்கள் நிரலின் ஒவ்வொரு அடியிலும் பின்வரும் வழிமுறையைப் பயன்படுத்துவோம்:
  1. ஜம்ப் அல்லது மூவ் ஆக்ஷன் தேர்ந்தெடுக்கப்பட்டதா?
  2. ஆம் எனில், கோலா மீது ஜம்ப் அல்லது மூவ்மெண்ட் ஃபோர்ஸைப் பயன்படுத்தவும்.
  3. மேலும், கோலாவுக்கு ஈர்ப்பு விசையைப் பயன்படுத்துங்கள்.
  4. கோலாவின் விளைவான வேகத்தைக் கணக்கிடுங்கள்.
  5. இதன் விளைவாக வரும் வேகத்தை கோலாவுக்குப் பயன்படுத்துங்கள் மற்றும் அதன் நிலையை புதுப்பிக்கவும்.
  6. மற்ற பொருட்களுடன் கோலா மோதலைச் சரிபார்க்கவும்.
  7. ஒரு மோதல் ஏற்பட்டால், ஒன்று கோலாவை இனி மோதல்கள் ஏற்படாத தடையிலிருந்து இவ்வளவு தூரத்திற்கு நகர்த்தவும்; அல்லது ஏழை கோலாவுக்கு சேதம் விளைவிக்கலாம்.

திட்டத்தின் ஒவ்வொரு கட்டத்திலும் இந்த படிகளை நாங்கள் மேற்கொள்வோம். எங்கள் விளையாட்டில், ஈர்ப்பு விசையானது கோலாவைத் தரையின் வழியே கீழும் கீழும் தொடர்ந்து செலுத்துகிறது, ஆனால் மோதலை கண்டறிதல் அவளை ஒவ்வொரு முறையும் தரைக்கு மேலே ஒரு புள்ளிக்கு கொண்டு வருகிறது. கோலா தரையைத் தொடுகிறதா என்பதைத் தீர்மானிக்க இந்த அம்சத்தையும் நீங்கள் பயன்படுத்தலாம். இல்லையெனில், கோலா குதிக்கும் நிலையில் இருக்கும் போது அல்லது தடையில் இருந்து குதித்த போது வீரர் குதிப்பதைத் தடுக்கலாம்.
கோலா பொருளின் உள்ளே 1-5 புள்ளிகள் ஏற்படும். அனைத்து தேவையான தகவல்இந்த பொருளின் உள்ளே சேமிக்கப்பட வேண்டும், மேலும் கோலா அதன் மாறிகளை புதுப்பிக்க அனுமதிப்பது மிகவும் தர்க்கரீதியானது.
இருப்பினும், 6 வது புள்ளிக்கு வரும்போது - மோதல்களைக் கண்டறிதல் - சுவர்கள், தளங்கள், எதிரிகள் மற்றும் பிற ஆபத்துகள் போன்ற மட்டத்தின் அனைத்து அம்சங்களையும் நாம் கணக்கில் எடுத்துக்கொள்ள வேண்டும். கேம் லெவல் லேயரைப் பயன்படுத்தி நிரலின் ஒவ்வொரு அடியிலும் மோதல் கண்டறிதல் மேற்கொள்ளப்படும் - இது CCLayer இன் துணைப்பிரிவாகும், இது பெரும்பாலான இயற்பியல் பணிகளைச் செய்யும்.
கோலா தனது நிலையை தானே புதுப்பிக்க அனுமதித்தால், இறுதியில் கோலா சுவர் அல்லது தரையைத் தொடும். கேம் லெவல்லேயர் கோலாவை மீண்டும் கொண்டு வரும். அதனால் மீண்டும் மீண்டும் - இது கோலாவை அதிரவைப்பது போல் தோற்றமளிக்கிறது. (இன்று காலை காபி அதிகம், கோலியோ?)
எனவே, கோலாவை அதன் நிலையைப் புதுப்பிக்க நாங்கள் அனுமதிக்க மாட்டோம். அதற்குப் பதிலாக, கோலாவுக்கு ஒரு புதிய மாறி, விரும்பிய நிலையைக் கொடுப்போம், அதை கோலா புதுப்பிக்கும். கோலாவை விரும்பிய இடத்திற்கு நகர்த்த முடியுமா என்பதை கேம் லெவல்லேயர் சரிபார்க்கும். ஆம் எனில், கேம் லெவல்லேயர் கோலாவின் நிலையைப் புதுப்பிக்கும்.
அனைத்தும் தெளிவாக? குறியீட்டில் அது எப்படி இருக்கிறது என்று பார்ப்போம்!

TMXTiledMap ஐ ஏற்றுகிறது

டைல் மேப்ஸ் எப்படி வேலை செய்கிறது என்பதை நீங்கள் நன்கு அறிந்திருப்பீர்கள் என்று கருதுகிறேன். இல்லையென்றால், அவற்றைப் பற்றி படிக்க பரிந்துரைக்கிறேன்.
அளவைப் பார்ப்போம். உங்கள் டைல்டு மேப் எடிட்டரைத் துவக்கவும் (இதற்கு முன்பு நீங்கள் அவ்வாறு செய்யவில்லை என்றால் பதிவிறக்கவும்) மற்றும் திறக்கவும் level1.tmxஉங்கள் திட்ட கோப்புறையிலிருந்து. நீங்கள் பின்வருவனவற்றைக் காண்பீர்கள்:

நீங்கள் பக்கப்பட்டியைப் பார்த்தால், எங்களிடம் மூன்று வெவ்வேறு அடுக்குகள் இருப்பதைக் காண்பீர்கள்:

  • ஆபத்துகள்:இந்த லேயரில் கோலா உயிருடன் இருக்கக் கவனிக்க வேண்டிய விஷயங்கள் உள்ளன.
  • சுவர்கள்:இந்த அடுக்கில் கோலா செல்ல முடியாத செல்கள் உள்ளன. அடிப்படையில் இவை தரை செல்கள்.
  • பின்னணி:இந்த அடுக்கில் மேகங்கள் அல்லது மலைகள் போன்ற முற்றிலும் அழகியல் விஷயங்கள் உள்ளன.
குறியீடு செய்ய வேண்டிய நேரம் இது! திற விளையாட்டுLevelLayer.mமேலும் #இறக்குமதிக்குப் பிறகு பின்வருவனவற்றைச் சேர்க்கவும் ஆனால் @செயல்படுத்துவதற்கு முன்:

@interface GameLevelLayer() ( CCTMXTiledMap *map; ) @end
எங்கள் ஹெட் கிளாஸில் மெஷ் மேப்களுடன் வேலை செய்ய, உள்ளூர் CCTMXTiledMap வகுப்பு மாறி வரைபடத்தைச் சேர்த்துள்ளோம்.
அடுத்து, லேயர் துவக்கத்தின் போது கண்ணி வரைபடத்தை எங்கள் லேயரில் வைப்போம். வழிமுறையில் பின்வருவனவற்றைச் சேர்ப்போம் அதில் உள்ளது:

CCLayerColor *blueSky = [ initWithColor:cc4(100, 100, 250, 255)]; ; வரைபடம் = [initWithTMXFile:@"level1.tmx"]; ;
முதலில், நீல வானத்தின் நிறத்தில் பின்னணியை (CCLayerColor) சேர்த்துள்ளோம். குறியீட்டின் அடுத்த இரண்டு வரிகள் வரைபட மாறியை (CCTMXTiledMap) ஏற்றி லேயரில் சேர்க்கும்.

#இறக்குமதி "Player.h"
இன்னும் உள்ளே விளையாட்டுLevelLayer.m@interface பிரிவில் பின்வரும் உள்ளூர் மாறியைச் சேர்ப்போம்:

பிளேயர் = [initWithFile:@"koalio_stand.png"]; வீரர். நிலை = ccp(100, 50); ;
இந்தக் குறியீடு கோலா ஸ்ப்ரைட் பொருளை ஏற்றுகிறது, அதற்கு ஒரு நிலையை அளிக்கிறது மற்றும் அதை எங்கள் வரைபடப் பொருளில் சேர்க்கிறது.
கோலா பொருளை வரைபடத்தில் ஏன் சேர்க்க வேண்டும் என்று நீங்கள் கேட்கலாம், அதை நேரடியாக அடுக்கில் சேர்ப்பதற்குப் பதிலாக? இது எளிமை. கோலாவுக்கு முன்னால் எந்த அடுக்கு இருக்கும், எந்த அடுக்கு அவளுக்குப் பின்னால் இருக்கும் என்பதை நாங்கள் நேரடியாகக் கட்டுப்படுத்த விரும்புகிறோம். எனவே கோலாவை வரைபடத்தின் குழந்தையாக மாற்றுகிறோம், முக்கிய அடுக்கு அல்ல. கோலா முன் இருக்க வேண்டும் என்று நாங்கள் விரும்புகிறோம், எனவே அதற்கு 15 இன் Z-வரிசையை வழங்குகிறோம். மேலும், வரைபடத்தை உருட்டும் போது, ​​கோலா இன்னும் அதே நிலையில் உள்ளது, வரைபடத்துடன் தொடர்புடையது, முக்கிய அடுக்கு அல்ல.
அருமை, முயற்சிப்போம்! உங்கள் திட்டத்தை இயக்கவும், பின்வருவனவற்றை நீங்கள் பார்க்க வேண்டும்:

ஒரு விளையாட்டு போல் தெரிகிறது, ஆனால் கோலியோ புவியீர்ப்பு விசையை மீறுகிறது! இயற்பியல் இயந்திரத்தைப் பயன்படுத்தி அதை பூமிக்குக் கொண்டுவருவதற்கான நேரம் இது:]

கோலியோ ஈர்ப்பு நிலைமை


இயற்பியல் உருவகப்படுத்துதலை உருவாக்க, நீங்கள் கோலாவின் நிலையை கணக்கில் எடுத்துக்கொண்டு, பெறப்பட்ட தகவல்களின் அடிப்படையில் அவளுக்கு சக்திகளைப் பயன்படுத்தக்கூடிய கிளை தர்க்கத்தின் சிக்கலான தொகுப்பை எழுதலாம். ஆனால் இந்த உலகம் உடனடியாக மிகவும் சிக்கலானதாக மாறும் - மேலும் உண்மையான இயற்பியல் சிக்கலானதாக வேலை செய்யாது. நிஜ உலகில், ஈர்ப்பு விசை தொடர்ந்து பொருட்களை கீழ்நோக்கி இழுக்கிறது. எனவே, நாங்கள் ஒரு நிலையான ஈர்ப்பு விசையைச் சேர்த்து, நிரலின் ஒவ்வொரு அடியிலும் கோலாவுக்குப் பயன்படுத்துகிறோம்.
மற்ற சக்திகள் ஆன் மற்றும் ஆஃப் செய்வதில்லை. நிஜ உலகில், ஒரு சக்தி ஒரு பொருளின் மீது மற்றொரு சக்தி அதிகமாகவோ அல்லது சமமாகவோ இருக்கும் வரை செயல்படுகிறது.
உதாரணமாக, ஒரு தாவலின் விசை ஈர்ப்பு விசையை அணைக்காது; புவியீர்ப்பு மீண்டும் கோலாவை தரையில் அழுத்தும் வரை, அது சிறிது காலத்திற்கு ஈர்ப்பு விசையை மிஞ்சும்.
இயற்பியல் இப்படித்தான் வடிவமைக்கப்பட்டுள்ளது. கோலா மீது ஈர்ப்பு விசையைப் பயன்படுத்தலாமா வேண்டாமா என்பதை நீங்கள் மட்டும் தீர்மானிக்கவில்லை. புவியீர்ப்பு எப்போதும் உள்ளது.

கடவுளை விளையாடுவோம்


ஒரு பொருளின் மீது ஒரு விசை செயல்பட்டால், மற்றொரு விசை முதல் விசையை மீறும் வரை அது தொடர்ந்து நகரும் என்று நமது இயந்திரத்தின் தர்க்கம் கூறுகிறது. கோலியோ ஒரு விளிம்பிலிருந்து குதிக்கும் போது, ​​அதன் பாதையில் ஒரு தடையை எதிர்கொள்ளும் வரை அது ஒரு குறிப்பிட்ட முடுக்கத்தில் கீழ்நோக்கி நகர்கிறது. நாம் கோலியோவை நகர்த்தும்போது, ​​அதற்கு இயக்க சக்தியைப் பயன்படுத்துவதை நிறுத்தும் வரை அது நகர்வதை நிறுத்தாது; உராய்வு அது நிற்கும் வரை Coalio மீது செயல்படும்.
நீங்கள் இயற்பியல் இயந்திரத்தை உருவாக்கும்போது, ​​சிக்கலான சிக்கல்களைத் தீர்க்க இதுபோன்ற எளிய விளையாட்டு தர்க்கம் எவ்வாறு உதவும் என்பதை நீங்கள் காண்பீர்கள். உடல் பணிகள், போன்றவை: ஒரு பனித் தளம் அல்லது ஒரு குன்றிலிருந்து விழுதல். இந்த நடத்தை மாதிரி விளையாட்டை மாறும் வகையில் மாற்ற அனுமதிக்கிறது.
மேலும், அத்தகைய நைட் நகர்வு செயல்படுத்துவதை எளிதாக்க அனுமதிக்கும், ஏனெனில் நமது பொருளின் நிலையை நாம் தொடர்ந்து கேட்க வேண்டிய அவசியமில்லை - பொருள் உண்மையான உலகில் இருந்து இயற்பியல் விதிகளைப் பின்பற்றும்.
சில நேரங்களில் நாம் கடவுளாக விளையாட வேண்டும்! :]

கிரக பூமியின் விதிகள்: CGP புள்ளிகள் மற்றும் படைகள்

பின்வரும் கருத்துகளை வரையறுப்போம்:
  • வேகம்ஒரு பொருள் ஒரு குறிப்பிட்ட திசையில் எவ்வளவு வேகமாக நகர்கிறது என்பதை விவரிக்கிறது.
  • முடுக்கம்காலப்போக்கில் ஒரு பொருளின் வேகம் மற்றும் திசை எவ்வாறு மாறுகிறது என்பதை விவரிக்கிறது.
  • படைவேகம் அல்லது திசையில் மாற்றத்தை ஏற்படுத்தும் தாக்கம்.
ஒரு இயற்பியல் உருவகப்படுத்துதலில், ஒரு பொருளின் மீது செலுத்தப்படும் ஒரு விசை பொருளை ஒரு குறிப்பிட்ட வேகத்திற்கு முடுக்கிவிடும், மேலும் வழியில் மற்றொரு சக்தியை எதிர்கொள்ளும் வரை அந்த வேகத்தில் பொருள் நகரும். வேகம் என்பது புதிய சக்திகள் தோன்றும்போது ஒரு சட்டத்திலிருந்து அடுத்த சட்டத்திற்கு மாறும் அளவு.
CGPoint கட்டமைப்புகளைப் பயன்படுத்தி மூன்று விஷயங்களைப் பிரதிநிதித்துவப்படுத்துவோம்: வேகம், விசை/முடுக்கம் மற்றும் நிலை. CGPoint கட்டமைப்புகளைப் பயன்படுத்த இரண்டு காரணங்கள் உள்ளன:
  1. அவை 2டி.வேகம், விசை/முடுக்கம் மற்றும் நிலை ஆகியவை 2டி கேமிற்கான 2டி அளவுகள். புவியீர்ப்பு ஒரு திசையில் மட்டுமே செயல்படுகிறது என்று நீங்கள் கூறலாம், ஆனால் விளையாட்டின் ஒரு கட்டத்தில் நாம் அவசரமாக ஈர்ப்பு திசையை மாற்ற வேண்டும் என்றால் என்ன செய்வது? சூப்பர் மரியோ கேலக்ஸியை நினைத்துப் பாருங்கள்!
  2. வசதியாக இருக்கிறது. CGPoint ஐப் பயன்படுத்தி நாம் பயன்படுத்தலாம் பல்வேறு செயல்பாடுகள், Cocos2D இல் கட்டமைக்கப்பட்டது. குறிப்பாக, ccpAdd (கூடுதல்), ccpSub (கழித்தல்) மற்றும் ccpMult (ஒரு மிதவை மாறி மூலம் பெருக்கல்) ஆகியவற்றைப் பயன்படுத்துவோம். இவை அனைத்தும் எங்கள் குறியீட்டைப் படிக்கவும் பிழைத்திருத்தவும் மிகவும் எளிதாக்கும்!
புவியீர்ப்பு, இயக்கம், குதித்தல், உராய்வு உள்ளிட்ட பல்வேறு சக்திகளின் தோற்றத்தின் காரணமாக நமது கோலா பொருள் மாறும் வேகத்தைக் கொண்டிருக்கும்.
விளையாட்டின் ஒவ்வொரு அடியிலும், அனைத்து சக்திகளையும் ஒன்றாகச் சேர்ப்போம், அதன் விளைவாக வரும் மதிப்பு கோலாவின் தற்போதைய வேகத்தில் சேர்க்கப்படும். இதன் விளைவாக, புதிய தற்போதைய வேகத்தைப் பெறுவோம். பிரேம் வீதத்தைப் பயன்படுத்தி அதைக் குறைப்போம். இதற்குப் பிறகு நாங்கள் கோலாவை நகர்த்துவோம்.
ஈர்ப்பு விசையுடன் ஆரம்பிக்கலாம். ரன் லூப்பை எழுதுவோம், அதில் சக்திகளைப் பயன்படுத்துவோம். கோப்பின் init முறையில் சேர்க்கவும் விளையாட்டுLevelLayer.m if நிபந்தனை தொகுதியை மூடுவதற்கு முன் பின்வரும் குறியீடு:

;
அடுத்து சேர் புதிய முறைவகுப்பிற்கு:

- (செல்லாத)புதுப்பிப்பு:(ccTime)dt ( ; )
அடுத்து, திறக்கவும் வீரர்.எச்மற்றும் இதை இப்படி மாற்றவும்:

#இறக்குமதி #இறக்குமதி "cocos2d.h" @interface Player: CCSprite @property (nonatomic, assign) CGPoint velocity; - (செல்லாத) புதுப்பிப்பு:(ccTime)dt; @முடிவு
பின்வரும் குறியீட்டைச் சேர்க்கவும் வீரர்.எம்:

என்னை அழுத்தவும்

#இறக்குமதி "Player.h" @implementation Player @synthesize velocity = _velocity; // 1 - (id)initWithFile:(NSString *)கோப்பின் பெயர் ( என்றால் (self = ) ( self.velocity = ccp(0.0, 0.0); ) return self; ) - (void)update:(ccTime)dt ( // 2 CGPoint gravity = ccp(0.0, -450.0) = ccpAdd(self.position, stepVelocity ) @end);


மேலே உள்ள குறியீட்டை படிப்படியாகப் பார்ப்போம்
  1. பொருளை துவக்கவும் வேக மாறியை பூஜ்ஜியமாக அமைக்கவும் ஒரு புதிய init முறையை இங்கு சேர்த்துள்ளோம்.
  2. இங்கே நாம் ஈர்ப்பு திசையன் மதிப்பை நியமித்துள்ளோம். ஒவ்வொரு நொடியும் நாம் கோலாவின் வேகத்தை 450 பிக்சல்கள் மூலம் வேகப்படுத்துகிறோம்.
  3. பிரேம் வீதத்திற்கு ஏற்ப ஈர்ப்பு திசையன் மதிப்பைக் குறைக்க ccpMult ஐப் பயன்படுத்தினோம். ccpMult float மற்றும் CGPoint ஐப் பெறுகிறது மற்றும் CGPoint ஐ வழங்குகிறது.
  4. இங்கே, தற்போதைய படிக்கான ஈர்ப்பு விசையைக் கணக்கிட்டவுடன், அதை தற்போதைய வேகத்தில் சேர்க்கிறோம்.
  5. இறுதியாக, ஒரு படிக்கான வேகத்தைக் கணக்கிட்டவுடன், கோலாவின் நிலையை மேம்படுத்த ccpAdd ஐப் பயன்படுத்துகிறோம்.
வாழ்த்துகள்! எங்கள் முதல் இயற்பியல் இயந்திரத்தை உருவாக்குவதற்கான பாதையில் நாங்கள் நன்றாக இருக்கிறோம்! முடிவுகளைக் காண உங்கள் திட்டத்தை இயக்கவும்!

அச்சச்சோ - கோலியோ தரையில் விழுகிறது! இதை சரி செய்வோம்.

இரவில் ஏற்படும் பாதிப்புகள் - மோதல் கண்டறிதல்

மோதல் கண்டறிதல் என்பது எந்த இயற்பியல் இயந்திரத்திற்கும் அடிப்படையாகும். மோதல் கண்டறிதலில் பல்வேறு வகைகள் உள்ளன பயன்படுத்த எளிதானதுபட சட்டங்கள், 3D பொருள்களின் சிக்கலான மோதல்கள். அதிர்ஷ்டவசமாக எங்களுக்கு, இயங்குதளத்திற்கு சிக்கலான கட்டமைப்புகள் தேவையில்லை.
கோலா பொருள்களுடன் மோதுவதைக் கண்டறிய, கோலாவை உடனடியாகச் சுற்றியுள்ள செல்களுக்கு TMXTileMap ஐப் பயன்படுத்துவோம். அடுத்து, iOS இல் உள்ளமைக்கப்பட்ட பல செயல்பாடுகளைப் பயன்படுத்தி, கோலா ஸ்ப்ரைட் எந்த செல்லின் ஸ்பிரைட்டையும் வெட்டுகிறதா என்பதைச் சரிபார்ப்போம்.
CGRectIntersectsRect மற்றும் CGRectIntersection செயல்பாடுகள் இத்தகைய சோதனைகளை மிகவும் எளிமையாக்குகின்றன. CGRectIntersectsRect இரண்டு செவ்வகங்கள் வெட்டுகின்றனவா என்பதைச் சரிபார்க்கிறது, மேலும் CGRectIntersection குறுக்குவெட்டு செவ்வகத்தை வழங்குகிறது.
முதலில், நமது கோலாவின் சட்டத்தை வரையறுக்க வேண்டும். ஒவ்வொரு ஏற்றப்பட்ட ஸ்ப்ரைட்டுக்கும் ஒரு பார்டர் உள்ளது, இது அமைப்பின் அளவு, மற்றும் boundingBox எனப்படும் அளவுருவைப் பயன்படுத்தி அணுகலாம்.
எல்லை பெட்டியில் ஏற்கனவே இருந்தால் அதை ஏன் வரையறுக்க வேண்டும்? அமைப்பு பொதுவாக அதைச் சுற்றி வெளிப்படையான விளிம்புகளைக் கொண்டுள்ளது, மோதல்களைக் கண்டறியும் போது நாம் உண்மையில் கணக்கில் எடுத்துக்கொள்ள விரும்பவில்லை.
சில நேரங்களில் நாம் உண்மையான ஸ்பிரைட் படத்தைச் சுற்றி இரண்டு பிக்சல்களைக் கூட கணக்கில் எடுத்துக்கொள்ள வேண்டியதில்லை (வெளிப்படையானது அல்ல). மரியோ ஒரு சுவரில் மோதும்போது, ​​அவன் அதை அரிதாகவே தொடுகிறானா அல்லது அவனது மூக்கு தடுப்புக்குள் லேசாக மூழ்குமா?
நாம் முயற்சிப்போம். சேர் வீரர்.எச்:

-(CGRect) மோதல்பௌண்டிங்பாக்ஸ்;
மற்றும் சேர்க்கவும் வீரர்.எம்:

- (CGRect) collisionBoundingBox ( CGRectInset (self.boundingBox, 2, 0) திரும்பவும்; )
CGRectInset CGRect ஐ இரண்டாவது மற்றும் மூன்றாவது வாதங்களிலிருந்து பிக்சல்களின் எண்ணிக்கையால் சுருக்குகிறது. எங்கள் விஷயத்தில், எங்கள் மோதல் சட்டத்தின் அகலம் ஆறு பிக்சல்கள் சிறியதாக இருக்கும் - ஒவ்வொரு பக்கத்திலும் மூன்று பிக்சல்கள்.

பளு தூக்குதல்

எடை தூக்கும் நேரம் இது. ("ஏய், நீங்கள் என்னை கொழுப்பு என்று அழைக்கிறீர்களா?" கோலியோ கூறுகிறார்).
மோதல்களைக் கண்டறிய, எங்கள் கேம் லெவல்லேயரில் பல முறைகள் தேவைப்படும். குறிப்பாக:
  • தற்போதைய கோலியோ கலத்தைச் சுற்றியுள்ள எட்டு கலங்களின் ஆயங்களை வழங்கும் முறை.
  • எந்த செல்கள் தடையாக உள்ளன என்பதை தீர்மானிக்கும் ஒரு முறை (மற்றும் பொதுவாக ஏதேனும் உள்ளதா). சில செல்கள் இல்லை உடல் பண்புகள்(மேகங்கள்), மற்றும் கோலியோ அவர்களுடன் மோதுவதில்லை.
  • முன்னுரிமை வரிசையில் மோதல்களைக் கையாளும் ஒரு முறை.
மேலே விவரிக்கப்பட்ட முறைகளை எளிதாக்கும் இரண்டு உதவி செயல்பாடுகளை உருவாக்குவோம்.
  • ஒரு கோலியோ கலத்தின் நிலையை தீர்மானிக்கும் முறை.
  • செல் ஒருங்கிணைப்புகளைப் பெற்று, கோகோஸ்2டி ஆயங்களில் கலத்தின் செவ்வகத்தை வழங்கும் முறை.
பின்வரும் குறியீட்டைச் சேர்க்கவும் விளையாட்டுLevelLayer.m:

- (CGPoint)tileCoordForPosition:(CGPoint)நிலை (float x = floor(position.x / map.tileSize.width); மிதவை நிலைHeightInPixels = map.mapSize.height * map.tileSize.height; float y = floor((levelHeightIn) பதவி ccp(tileCoords.x * map.tileSize.width, levelHeightInPixels - ((tileCoords.y + 1) * map.tileSize.height)); CGRectMake(origin.x, origin.y, map.tileSize.width, map. tileSize.height);
முதல் முறையானது, நாம் முறைக்கு அனுப்பும் பிக்சல் ஆயத்தொலைவுகளில் அமைந்துள்ள கலத்தின் ஆயங்களை நமக்குத் தருகிறது. செல் நிலையைப் பெற, ஆயத்தொலைவுகளை கலங்களின் அளவால் வகுக்கிறோம்.
Cocos2D/OpenGL சிஸ்டம் ஆயத்தொலைவுகள் கீழ் இடது மூலையில் இருந்தும், கணினி ஒருங்கிணைப்புகள் மேல் இடது மூலையில் இருந்தும் தொடங்குவதால் உயர ஆயங்களை நாம் தலைகீழாக மாற்ற வேண்டும். தரநிலைகள் - அது நன்றாக இல்லையா?
இரண்டாவது முறை இதற்கு நேர்மாறாக செயல்படுகிறது. இது கலங்களின் அளவின் மூலம் செல் ஒருங்கிணைப்பை பெருக்கி, கொடுக்கப்பட்ட கலத்தின் CGRect ஐ வழங்குகிறது. மீண்டும், நாம் உயரத்தை விரிவாக்க வேண்டும்.
உயரத்தின் y-கோர்டினேட்டில் ஒன்றை ஏன் சேர்க்க வேண்டும்? செல் ஆயத்தொலைவுகள் பூஜ்ஜியத்தில் தொடங்குகின்றன என்பதை நினைவில் கொள்ளுங்கள், எனவே செல் 20 ஆனது 19 இன் உண்மையான ஆயத்தை கொண்டுள்ளது. உயரத்தில் ஒன்றைச் சேர்க்கவில்லை என்றால், புள்ளி 19 * tileHeight ஆக இருக்கும்.

நான் செல்களால் சூழப்பட்டிருக்கிறேன்!

இப்போது கோலாவைச் சுற்றியுள்ள செல்களை நிர்ணயிக்கும் முறைக்கு செல்லலாம். இந்த முறையில் நாம் ஒரு வரிசையை உருவாக்குவோம், அதை நாங்கள் திரும்பப் பெறுவோம். இந்த வரிசையில் கலத்தின் GID, கலத்தின் ஒருங்கிணைப்புகள் மற்றும் அந்த கலத்தின் CGRect தகவல் இருக்கும்.
இந்த வரிசையை முன்னுரிமையின்படி ஒழுங்கமைக்கிறோம், அதில் மோதல்களைக் கண்டறிவோம். எடுத்துக்காட்டாக, மூலைவிட்டவற்றை வரையறுப்பதற்கு முன், மேலே, இடது, வலது, கீழே உள்ள மோதல்களைக் கண்டறிய விரும்புகிறோம். மேலும், கோலாவின் அடிப்பகுதிக் கலத்தில் மோதுவதைக் கண்டறியும் போது, ​​தரையைத் தொடும் கொடியை அமைக்கிறோம்.
இந்த முறையைச் சேர்ப்போம் விளையாட்டுLevelLayer.m:

என்னை அழுத்தவும்

- (NSArray *)getSurroundingTilesAtPosition:(CGPoint)Position for Layer:(CCTMXLayer *)layer (CGPoint plPos = ; //1 NSMutableArray *gids = ; //2 for (int i = 0; i< 9; i++) { //3 int c = i % 3; int r = (int)(i / 3); CGPoint tilePos = ccp(plPos.x + (c - 1), plPos.y + (r - 1)); int tgid = ; //4 CGRect tileRect = ; //5 NSDictionary *tileDict = , @"gid", , @"x", , @"y", ,@"tilePos", nil]; ; } ; atIndex:6]; ; ; ; //6 for (NSDictionary *d in gids) { NSLog(@"%@", d); } //7 return (NSArray *)gids; }


Pfft - குறியீட்டின் முழு மேகம். கவலைப்பட வேண்டாம், நாங்கள் அதை விரிவாகப் பார்ப்போம்.
ஆனால் அதற்கு முன், எங்கள் வரைபடத்தில் மூன்று அடுக்குகள் இருப்பதைக் கவனியுங்கள்.
வெவ்வேறு அடுக்குகளைக் கொண்டிருப்பது, ஒவ்வொரு அடுக்குக்கும் வெவ்வேறு விதத்தில் மோதல்களை வரையறுக்க அனுமதிக்கிறது.
  • கோலா மற்றும் ஆபத்துகள்.மோதல் ஏற்பட்டால், நாங்கள் கோலாவைக் கொல்வோம் (மிகவும் கொடூரமானது, இல்லையா?).
  • கோலா மற்றும் சுவர்கள்.ஒரு மோதல் ஏற்பட்டால், கோலாவை அந்த திசையில் மேலும் நகர்த்த அனுமதிக்க மாட்டோம். "நிறுத்து, மாரே!"
  • கோலா மற்றும் பின்னணிகள்.ஒரு மோதல் ஏற்பட்டால், நாங்கள் எதுவும் செய்ய மாட்டோம். சோம்பேறி புரோகிராமர் - சிறந்த புரோகிராமர். அல்லது மக்கள் என்ன சொல்கிறார்கள்?
நிச்சயமாக, வெவ்வேறு தொகுதிகளுடன் வெவ்வேறு மோதல்களைக் கண்டறிய வெவ்வேறு வழிகள் உள்ளன, ஆனால் நம்மிடம் உள்ளவை - வரைபடத்தில் அடுக்குகள் - மிகவும் பயனுள்ளதாக இருக்கும்.
சரி, படிப்படியாக குறியீடு மூலம் செல்லலாம்.

1. முதலில், உள்ளீட்டு கலத்தின் ஆயங்களை நாம் பெறுகிறோம் (இது கோலாவின் ஆயங்களாக இருக்கும்).
2. அடுத்து, செல் பற்றிய தகவலை வழங்கும் புதிய வரிசையை உருவாக்குகிறோம்.
3. அடுத்து, லூப்பை 9 முறை இயக்குகிறோம் - எங்களிடம் 9 சாத்தியமான இயக்கக் கலங்கள் இருப்பதால், கோலா ஏற்கனவே உள்ள செல் உட்பட. அடுத்த சில வரிகள் ஒன்பது கலங்களின் நிலைகளை வரையறுத்து அவற்றை tilePos மாறியில் சேமிக்கும்.

குறிப்பு:எங்களுக்கு எட்டு செல்கள் பற்றிய தகவல்கள் மட்டுமே தேவை, ஏனெனில் கோலா ஏற்கனவே உள்ள கலத்துடன் மோதுவதை நாம் ஒருபோதும் கண்டறிய வேண்டியதில்லை.
நாம் எப்போதும் இந்த வாய்ப்பைப் பிடித்து, கோலாவைச் சுற்றியுள்ள செல்களில் ஒன்றிற்கு நகர்த்த வேண்டும். கோலியோ ஒரு திடமான கலத்திற்குள் இருந்தால், கோலியோவின் ஸ்பிரைட்டில் பாதிக்கும் மேற்பட்டவை உள்ளே சென்றிருக்கும். அவர் வேகமாக நகரக்கூடாது - குறைந்தபட்சம் இந்த விளையாட்டில் இல்லை!
இந்த எட்டு கலங்களில் செயல்படுவதை எளிதாக்க, ஆரம்பத்தில் Coalio கலத்தைச் சேர்த்து, இறுதியில் அதை அகற்றவும்.

4. நான்காவது பிரிவில் tileGIDAt: method என்று அழைக்கிறோம். இந்த முறை ஒரு குறிப்பிட்ட ஒருங்கிணைப்பில் ஒரு கலத்தின் GID ஐ வழங்குகிறது. பெறப்பட்ட ஆயங்களில் செல் இல்லை என்றால், முறை பூஜ்ஜியத்தைத் தரும். பின்வருவனவற்றில், "செல் கிடைக்கவில்லை" என்று பொருள்பட பூஜ்ஜியத்தைப் பயன்படுத்துவோம்.
5. அடுத்து, கொடுக்கப்பட்ட Cocos2D ஆயத்தொலைவுகளில் ஒரு கலத்திற்கான CGRect ஐக் கணக்கிட உதவும் முறையைப் பயன்படுத்துகிறோம். பெறப்பட்ட தகவலை NSD அகராதியில் சேமிக்கிறோம். இந்த முறை பெறப்பட்ட NSD அகராதியின் வரிசையை வழங்குகிறது.
6. ஆறாவது பிரிவில், கோலா கலத்தை வரிசையில் இருந்து அகற்றி, செல்களை முன்னுரிமை வரிசையில் வரிசைப்படுத்துகிறோம்.

பெரும்பாலும், கோலாவின் கீழ் ஒரு கலத்துடன் மோதுவதைக் கண்டறியும் விஷயத்தில், மூலைவிட்டத்தில் உள்ள செல்களுடன் மோதுவதையும் நாங்கள் கண்டறிவோம். வலதுபுறத்தில் உள்ள படத்தைப் பார்க்கவும். சிவப்பு நிறத்தில் ஹைலைட் செய்யப்பட்ட கோலாவின் கீழ் உள்ள கலத்துடன் மோதுவதைக் கண்டறியும் போது, ​​நீல நிறத்தில் ஹைலைட் செய்யப்பட்ட பிளாக் #2 உடன் மோதுவதையும் கண்டறிகிறோம்.
எங்கள் மோதல் கண்டறிதல் அல்காரிதம் சில அனுமானங்களைச் செய்யும். இந்த அனுமானங்கள் மூலைவிட்ட செல்களைக் காட்டிலும் அருகிலுள்ள செல்களுக்கு உண்மையாக இருக்கும். எனவே முடிந்தவரை மூலைவிட்ட செல்களைக் கையாள்வதைத் தவிர்க்க முயற்சிப்போம்.
வரிசைப்படுத்துவதற்கு முன்னும் பின்னும் வரிசையில் உள்ள செல்களின் வரிசையை தெளிவாகக் காட்டும் படம் இங்கே உள்ளது. மேல், கீழ், வலது மற்றும் இடது செல்கள் முதலில் செயலாக்கப்படுவதை நீங்கள் கவனிப்பீர்கள். செல்களின் வரிசையை அறிந்துகொள்வது, கோலா எப்போது தரையைத் தொடுகிறது அல்லது மேகங்களில் பறக்கிறது என்பதை நீங்கள் எளிதாகக் கண்டறியலாம்.

7. பிரிவு ஏழில் உள்ள லூப் செல்களை உண்மையான நேரத்தில் கண்காணிக்க அனுமதிக்கிறது. இதன் மூலம், அனைத்தும் திட்டமிட்டபடி நடக்கின்றன என்பதை உறுதியாக அறிந்து கொள்ளலாம்.

எங்கள் விளையாட்டின் அடுத்த வெளியீட்டிற்கு நாங்கள் கிட்டத்தட்ட தயாராக இருக்கிறோம்! இருப்பினும், இன்னும் இரண்டு விஷயங்கள் செய்யப்பட வேண்டும். GameLevelLayer வகுப்பில் சுவர்களின் அடுக்கை மாறியாகச் சேர்க்க வேண்டும், அதனால் அதைப் பயன்படுத்தலாம்.

உள்ளே விளையாட்டுLevelLayer.mபின்வரும் மாற்றங்களைச் செய்யுங்கள்:

// @ இடைமுகம் CCTMXLayer * சுவர்களில் சேர்; // அடுக்கு சுவர்களில் வரைபடம் சேர்க்கப்பட்ட பிறகு init முறையில் சேர்க்கவும் = ; // புதுப்பிப்பு முறைக்கு சேர்;
துவக்கு! ஆனால், துரதிர்ஷ்டவசமாக, விளையாட்டு செயலிழக்கிறது. கன்சோலில் இதுபோன்ற ஒன்றைக் காண்கிறோம்:

முதலில் செல் நிலைகள் மற்றும் GID மதிப்புகள் பற்றிய தகவல்களைப் பெறுகிறோம் (பெரும்பாலும் பூஜ்ஜியங்கள் இருந்தாலும், மேலே காலி இடம் இருப்பதால்).
இறுதியில், "TMXLayer: தவறான நிலை" பிழையுடன் எல்லாம் செயலிழக்கச் செய்கிறது. ஒரு நிலை tileGIDat க்கு அனுப்பப்படும் போது இது நிகழும்: வரைபடத்தின் விளிம்புகளுக்கு வெளியே இருக்கும் முறை.
சிறிது நேரம் கழித்து இந்தப் பிழையைத் தவிர்ப்போம் - ஆனால் முதலில், தற்போதுள்ள மோதல் வரையறையை மாற்றப் போகிறோம்.

கோலாவின் சலுகைகளை திரும்பப் பெறுதல்

இந்த தருணம் வரை, கோலா தனது நிலையை தானே புதுப்பித்துக்கொண்டார். ஆனால் இப்போது அந்தச் சலுகையை அவளிடமிருந்து பறிக்கிறோம்.

கோலா தன் நிலையைப் புதுப்பித்துக் கொண்டால், அது இறுதியில் பைத்தியம் போல் குதிக்கத் தொடங்கும்! ஆனால் நாம் அதை விரும்பவில்லை, இல்லையா?
எனவே கோலாவிற்கு கூடுதல் மாறி, விரும்பிய நிலை தேவைப்படுகிறது, அதனுடன் அது கேம் லெவல்லேயருடன் தொடர்பு கொள்ளும்.
கோலா வகுப்பு அதன் அடுத்த நிலையைத் தானாகக் கணக்கிட வேண்டும் என்று நாங்கள் விரும்புகிறோம். ஆனால் கேம்லெவல்லேயர் கோலாவை செல்லுபடியாக்குவதை சரிபார்த்த பின்னரே விரும்பிய நிலைக்கு நகர்த்த வேண்டும். மோதல் கண்டறிதல் வளையத்திற்கும் இது பொருந்தும் - அனைத்து கலங்களும் மோதலுக்குச் சரிபார்க்கப்படுவதற்கு முன்பு உண்மையான ஸ்ப்ரைட்டைப் புதுப்பிக்க விரும்பவில்லை.
நாம் சில விஷயங்களை மாற்ற வேண்டும். முதலில், பின்வருவனவற்றைச் சேர்க்கவும் வீரர்.எச்

@சொத்து (நாடாமிக், ஒதுக்க) CGPoint விரும்பிய நிலை;
மேலும் சேர்த்ததை ஒருங்கிணைக்கவும் வீரர்.எம்:

@synthesize விரும்பிய நிலை = _desired Position;
இப்போது, ​​முறையை மாற்றவும் collisionBoundingBoxவி வீரர்.எம்எனவே இது போல் தெரிகிறது:

- (CGRect)collisionBoundingBox (CGRect collisionBox = CGRectInset(self.boundingBox, 3, 0); CGPoint diff = ccpSub(self.desiredPosition, self.position); CGRect returnBoundingBox = CGffyxOffset,ff.ff.di.); ரிட்டர்ன்பவுண்டிங்பாக்ஸ்)
கேம்லெவல்லேயர் மோதல்களைக் கண்டறியப் பயன்படுத்தும் விரும்பிய நிலையின் அடிப்படையில் இந்தக் குறியீடு சட்டத்தை கணக்கிடுகிறது.

குறிப்பு:பல உள்ளன பல்வேறு வழிகளில்மோதல் சட்ட கணக்கீடுகள். CCNode வகுப்பில் ஏற்கனவே உள்ளதைப் போன்ற குறியீட்டை நீங்கள் எழுதலாம், ஆனால் எங்களின் தற்போதைய முறை மிகவும் எளிமையானது, இருப்பினும் கொஞ்சம் வெளிப்படையாக இல்லை.
அடுத்து, புதுப்பிப்பு முறையில் பின்வரும் மாற்றங்களைச் செய்யுங்கள், இதனால் தற்போதைய நிலைக்குப் பதிலாக விரும்பிய நிலையைப் புதுப்பிக்கவும்:

// "self.position = ccpAdd(self.position, stepVelocity)"ஐ மாற்றவும் செய்ய: self.desiredPosition = ccpAdd(self.position, stepVelocity);

மோதல்களைக் கண்டறியத் தொடங்குவோம்!

தீவிர சாதனைகளுக்கான நேரம் வந்துவிட்டது. நாங்கள் எல்லாவற்றையும் ஒன்றாக இணைக்கப் போகிறோம். பின்வரும் முறையைச் சேர்க்கவும் விளையாட்டுLevelLayer.m:

என்னை அழுத்தவும்

- (செல்லம்) checkForAndResolveCollisions:(Player *)p (NSArray *tiles = ; //1 க்கான (NSDictionary *dic in tiles) ( CGRect pRect = ; //2 int gid = [ intValue]; //3 என்றால் (gid) (CGRect tileRect = CGRectMake([floatValue], [floatValue], map.tileSize.width, map.tileSize.height); //4 என்றால் (CGRectIntersectsRect(pRect, tileRect)) (CGRect குறுக்குவெட்டு = CGRectRectIntersection); //5 int tileIndx = //6 if (tileIndx == 0) ( //கோலா p.desiredPosition = ccp(p.desiredPosition.x, p.desiredPosition.y + intersection.size.height) ; ) ( //கோலாவின் இடதுபுறத்தில் செல் கோலா p.desiredPosition = ccp(p.desiredPosition.x - intersection.size.width, p.desiredPosition.y); ) வேறு ( (intersection.size.width > intersection.size.height) என்றால் ( //7 //செல் மூலைவிட்டமாக உள்ளது, ஆனால் சிக்கலை செங்குத்தாக மிதக்கும் intersectionHeight; என்றால் (tileIndx > 5) ( intersectionHeight = intersection.size. உயரம் சிக்கலைக் கிடைமட்டமாகத் தீர்க்கும் தீர்மானம் ; p.desiredPosition.x, p. desiredPosition.y + resolutionWidth); //7)


நன்று! நாம் இப்போது எழுதிய குறியீட்டைப் பார்ப்போம்.

1. முதலில் கோலாவைச் சுற்றியுள்ள செல்களின் தொகுப்பைப் பெறுகிறோம். அடுத்து, இந்த தொகுப்பிலிருந்து ஒவ்வொரு கலத்தின் வழியாகவும் சுழற்றுவோம். ஒவ்வொரு முறையும் நாம் செல் வழியாக நடக்கும்போது, ​​​​அதில் மோதல்கள் இருக்கிறதா என்று சோதிக்கிறோம். மோதல் ஏற்பட்டால், கோலாவின் விரும்பிய நிலையை மாற்றுவோம்.
2. சுழற்சியின் ஒவ்வொரு வளையத்திலும், நாம் முதலில் தற்போதைய கோலா சட்டத்தைப் பெறுகிறோம். ஒவ்வொரு முறையும் மோதலை கண்டறியும் போது, ​​விரும்பிய நிலை மாறி அதன் மதிப்பை மோதாமல் மாற்றும்.
3. அடுத்த கட்டமாக, NSD அகராதியில் நாம் சேமித்து வைத்திருக்கும் GIDஐப் பெறுவது, அது பூஜ்யமாக இருக்கலாம். GID பூஜ்ஜியமாக இருந்தால், தற்போதைய சுழற்சி முடிவடைகிறது மற்றும் அடுத்த கலத்திற்கு செல்கிறோம்.
4. புதிய நிலையில் செல் இருந்தால், அதை CGRect பெற வேண்டும். மோதல் இருக்கலாம் அல்லது இல்லாமல் இருக்கலாம். பின்வரும் குறியீட்டின் வரியைப் பயன்படுத்தி இந்த செயல்முறையை நாங்கள் செயல்படுத்துகிறோம் மற்றும் அதை tileRect மாறியில் சேமிக்கிறோம். இப்போது எங்களிடம் கோலாவின் CGRect மற்றும் செல்கள் இருப்பதால், அவற்றை மோதுவதற்கு சோதிக்கலாம்.
5. மோதலுக்கு செல்களைச் சரிபார்க்க, CGRectIntersectsRect ஐ இயக்குகிறோம். மோதல் ஏற்பட்டால், CGRectIntersection() செயல்பாட்டைப் பயன்படுத்தி CGRect குறுக்குவெட்டை விவரிக்கும் CGRect ஐப் பெறுவோம்.

இக்கட்டான சூழ்நிலையைப் பற்றி சிந்திப்பதோடு நிறுத்துவோம்...

மிகவும் சுவாரஸ்யமான வழக்கு. மோதல்களை எவ்வாறு சரியாகக் கண்டறிவது என்பதை நாம் கண்டுபிடிக்க வேண்டும்.
கோலாவை மோதலில் இருந்து நகர்த்துவதே சிறந்த வழி என்று நீங்கள் நினைக்கலாம். சில இயற்பியல் இயந்திரங்கள் உண்மையில் இந்த வழியில் செயல்படுகின்றன, ஆனால் நாங்கள் ஒரு சிறந்த தீர்வை முயற்சிக்கப் போகிறோம்.
இதைப் பற்றி யோசித்துப் பாருங்கள்: ஈர்ப்பு விசையானது கோலாவை கீழே உள்ள செல்களுக்குள் இழுத்துச் செல்கிறது, மேலும் இந்த மோதல்கள் எல்லா நேரத்திலும் நிகழ்கின்றன. கோலா முன்னோக்கி நகர்வதை நீங்கள் கற்பனை செய்தால், அதே நேரத்தில் கோலா இன்னும் ஈர்ப்பு விசையால் கீழே இழுக்கப்படுகிறது. இந்த சிக்கலை நாங்கள் தீர்த்தால் எளிய மாற்றம்எதிர் திசையில் இயக்கம், பின்னர் கோலா மேலே மற்றும் இடது பக்கம் நகரும் - ஆனால் எங்களுக்கு வேறு ஏதாவது தேவை!
எங்கள் கோலா இந்த செல்களுக்கு மேலே இருக்க போதுமான தூரத்தை நகர்த்த வேண்டும், ஆனால் அதே வேகத்தில் தொடர்ந்து முன்னேற வேண்டும்.

கோலா சுவரில் இருந்து கீழே சரிந்தாலும் இதே பிரச்சனை ஏற்படும். வீரர் கோலாவை சுவருக்கு எதிராகத் தள்ளினால், கோலாவின் விரும்பிய பாதை குறுக்காக கீழே மற்றும் சுவரில் செலுத்தப்படும். திசையைத் திருப்புவதன் மூலம், கோலாவை சுவரில் இருந்து மேலே நகர்த்தச் செய்வோம் - மீண்டும், அதே போல் அல்ல! கோலா சுவருக்கு வெளியே இருக்க வேண்டும் என்று நாங்கள் விரும்புகிறோம், ஆனால் இன்னும் அதே வேகத்தில் கீழே செல்ல வேண்டும்!

எனவே, மோதல்களை எப்போது செங்குத்தாக கையாள வேண்டும், எப்போது கிடைமட்டமாக கையாள வேண்டும் என்பதை நாம் முடிவு செய்ய வேண்டும், மேலும் இரண்டு செயல்களையும் பரஸ்பரம் கையாள வேண்டும். சில இயற்பியல் இயந்திரங்கள் தொடர்ந்து முதல் நிகழ்வையும், பின்னர் இரண்டாவது நிகழ்வையும் செயல்படுத்துகின்றன; ஆனால் கோலா கலத்தின் நிலைப்பாட்டின் அடிப்படையில் சிறந்த முடிவை எடுக்க விரும்புகிறோம். எனவே, எடுத்துக்காட்டாக, செல் நேரடியாக கோலாவுக்குக் கீழே இருக்கும் போது, ​​கோலாவை மீண்டும் மேலே கொண்டு வருவதற்கு மோதல் கண்டறிதலை நாங்கள் விரும்புகிறோம்.
செல் கோலாவின் நிலைக்கு குறுக்காக இருந்தால் என்ன செய்வது? இந்த வழக்கில், கோலாவை எவ்வாறு நகர்த்த வேண்டும் என்பதைக் கண்டுபிடிக்க CGRect குறுக்குவெட்டுகளைப் பயன்படுத்துகிறோம். இந்த செவ்வகத்தின் அகலம் உயரத்தை விட அதிகமாக இருந்தால், கோலா செங்குத்தாக திரும்ப வேண்டும். உயரம் அகலத்தை விட அதிகமாக இருந்தால், கோலா கிடைமட்டமாக நகர வேண்டும்.

கோலாவின் வேகம் மற்றும் பிரேம் வீதம் குறிப்பிட்ட வரம்புகளுக்குள் இருக்கும் வரை இந்த செயல்முறை சரியாக வேலை செய்யும். சிறிது நேரம் கழித்து, கோலா மிக விரைவாக விழுந்து செல் வழியாக கீழே குதிக்கும் நிகழ்வுகளைத் தவிர்க்க கற்றுக்கொள்வோம்.
கோலாவை செங்குத்தாக அல்லது கிடைமட்டமாக நகர்த்த வேண்டுமா என்பதை நாங்கள் தீர்மானித்தவுடன், கோலாவை எவ்வளவு நகர்த்த வேண்டும் என்பதைத் தீர்மானிக்க, குறுக்குவெட்டின் CGRect அளவைப் பயன்படுத்துகிறோம். நாங்கள் முறையே அகலம் அல்லது உயரத்தைப் பார்க்கிறோம், மேலும் இந்த மதிப்பை கோலாவின் இடப்பெயர்ச்சி தூரமாகப் பயன்படுத்துகிறோம்.
ஒரு குறிப்பிட்ட வரிசையில் செல்களை ஏன் சரிபார்க்க வேண்டும்? நீங்கள் எப்போதும் அருகில் உள்ள செல்களில் முதலில் வேலை செய்ய வேண்டும், பின்னர் மூலைவிட்ட செல்களில் வேலை செய்ய வேண்டும். எல்லாவற்றிற்கும் மேலாக, கோலாவின் கீழ் வலதுபுறத்தில் உள்ள கலத்தை மோதலுக்குச் சரிபார்க்க விரும்பினால், இடப்பெயர்ச்சி திசையன் செங்குத்தாக இயக்கப்படும்.

இருப்பினும், கோலா கலத்தை அரிதாகவே தொடும் போது மோதல் CGRect மேல்நோக்கி இழுக்கப்படும் வாய்ப்பு இன்னும் உள்ளது.
வலதுபுறத்தில் உள்ள படத்தைப் பாருங்கள். நீலப் பகுதி மேல்நோக்கி நீட்டப்பட்டுள்ளது, ஏனெனில் மோதல் செவ்வகமானது ஒட்டுமொத்த மோதலின் ஒரு சிறிய பகுதி மட்டுமே. இருப்பினும், கோலாவுக்கு கீழே உள்ள கலத்தின் சிக்கலை நாங்கள் ஏற்கனவே தீர்த்திருந்தால், கோலாவின் வலதுபுறத்தில் கீழே உள்ள கலத்துடன் மோதுவதை இனி கண்டறிய வேண்டியதில்லை. இப்படித்தான் நாம் எழும் பிரச்சனைகளைச் சமாளிக்கிறோம்.

குறியீட்டிற்குத் திரும்பு!

அசுரத்தனமான முறைக்கு வருவோம்...

6. ஆறாவது பிரிவு தற்போதைய கலத்தின் குறியீட்டைப் பெற அனுமதிக்கிறது. செல் நிலையைப் பெற செல் குறியீட்டைப் பயன்படுத்துகிறோம். கோலாவை நகர்த்துவது, மோதலின் நீளம் அல்லது உயரத்தைக் கழிப்பது அல்லது கூட்டுவது போன்றவற்றை தனித்தனியாக அருகில் உள்ள செல்களில் இயக்கப் போகிறோம். மிகவும் எளிமையானது. இருப்பினும், மூலைவிட்ட கலங்களுக்கு வந்ததும், முந்தைய பிரிவில் விவரிக்கப்பட்டுள்ள வழிமுறையைப் பயன்படுத்தப் போகிறோம்.
7. ஏழாவது பிரிவில், நமது மோதல் பகுதி அகலமானதா அல்லது மேல்நோக்கி நீட்டப்பட்டதா என்பதை தீர்மானிக்கிறோம்? அது அகலமாக இருந்தால், நாங்கள் செங்குத்தாக வேலை செய்கிறோம். செல் குறியீட்டு எண் 5 ஐ விட அதிகமாக இருந்தால், கோலாவை மேலே நகர்த்தவும். பகுதி மேல்நோக்கி நீட்டினால், நாங்கள் கிடைமட்டமாக வேலை செய்கிறோம். செல் குறியீடுகளை வரிசைப்படுத்தும் இதே கொள்கையை நாங்கள் பின்பற்றுகிறோம். முடிவில், கோலாவுக்கு விளைந்த நிலையை நாங்கள் ஒதுக்குகிறோம்.

இந்த முறைதான் நமது மோதல் கண்டறிதல் அமைப்பின் மூளை.

இருக்கும் அறிவை எல்லாம் நடைமுறைக்கு கொண்டு வருவோம்! முறையை மாற்றவும் மேம்படுத்தல்(இன்னும் உள்ளே கேம் லெவல்லேயர்:)

// ";" ஐ மாற்றவும் அதன் மேல்: ;
நீங்கள் தடையை நீக்கலாம் அல்லது கருத்து தெரிவிக்கலாம் GetSurroundingTilesAtPosition:ForLayer:

/* க்கான (NSDictionary *d in gids) ( NSLog(@"%@", d); ) //8 */
துவக்குவோம்! முடிவைக் கண்டு ஆச்சரியப்படுகிறீர்களா?

பால் கோலியோவை நிறுத்துகிறார், ஆனால் அவர் உடனடியாக அவனில் மூழ்கிவிடுகிறார்! ஏன்?
நாங்கள் தவறவிட்டதை உங்களால் யூகிக்க முடியுமா? நினைவில் கொள்ளுங்கள் - விளையாட்டின் ஒவ்வொரு அடியிலும் நாம் கோலாவின் வேகத்திற்கு ஈர்ப்பு சேர்க்கிறோம். இதன் பொருள் கோலா தொடர்ந்து கீழ்நோக்கி வேகமடைகிறது.
கோலாவின் கீழ்நோக்கி செல்லும் பாதையில் அது ஒரு செல்லின் அளவாக மாறும் வரை தொடர்ந்து வேகத்தைச் சேர்க்கிறோம் - ஒரு முழு செல் வழியாகவும் ஒரே படியாக நகர்கிறோம், அதனால்தான் சிக்கல்கள் ஏற்படுகின்றன (நினைவில் கொள்ளுங்கள், இதைப் பற்றி நாங்கள் சமீபத்தில் பேசினோம்).
மோதலை கண்டறிந்ததும், அது மோதிய கலத்தின் திசையில் கோலாவின் வேகத்தை மீட்டமைக்க வேண்டும்! கோலா நகர்வதை நிறுத்திவிட்டது, எனவே வேகத்தை கணக்கில் எடுத்துக்கொள்ள வேண்டும்.
நாங்கள் இதைச் செய்யாவிட்டால், சில வித்தியாசமான விளையாட்டு நடத்தையுடன் முடிவடைவோம். நாம் முன்பே குறிப்பிட்டது போல, கோலா தரையைத் தொடுகிறதா என்பதைக் கண்டறிய நமக்கு ஒரு வழி தேவை, அதனால் கோலா இன்னும் மேலே குதிக்க முடியாது. இந்த பெட்டியை இப்போதே சரிபார்ப்போம். பின்வரும் வரிகளைச் சேர்க்கவும் சரிபார்ப்பு மற்றும் தீர்வு மோதல்கள்:

என்னை அழுத்தவும்

- (செல்லம்) checkForAndResolveCollisions:(பிளேயர் *)p (NSArray *tiles = gid = [ intValue]; //4 if (gid) ( CGRect tileRect = CGRectMake([floatValue], [floatValue], map.tileSize.width, map.tileSize.height); //5 என்றால் (CGRectIntersectsRect, tile )) (CGRect குறுக்குவெட்டு = CGRectIntersection(pRect, tileRect); int tileIndx = ; if (tileIndx == 0) (//கோலா p.desiredPosition = ccp(p.desiredPosition.x, p.desiredPosition.y + குறுக்குவெட்டு. சைஸ் //கோலா p.desiredPosition = ccp(p.desiredPosition.y - intersection.size.height); p.velocity = ccp(p.velocity.x, 0.0); (tileIndx == 2) ( //இடதுபுறத்தில் செல் வலதுபுறத்தில் உள்ள செல் p.desiredPosition = ccp(p.desiredPosition.x - intersection.size.width, p.desiredPosition.y); ) வேறு ( (intersection.size.width > intersection.size.height) என்றால் ( //டைல் மூலைவிட்டமானது, ஆனால் மோதலை செங்குத்தாக தீர்க்கும் p.velocity = ccp(p.velocity.x, 0.0); //////இங்கே float resolutionHeight; என்றால் (tileIndx > 5) ( resolutionHeight = intersection.size.height; p.onGround = ஆம்; //////இங்கே ) else ( resolutionHeight = -intersection.size.height; ) p.desiredPosition = ccp( p.desiredPosition.x, p.desiredPosition.y + தெளிவுத்திறன் உயரம் (float resolutionWidth; if (tileIndx == 6 || tileIndx == 4) ( resolutionWidth = intersection.size.width; ) else ( resolutionWidth = -intersection . size.width; ) ப //8)


ஒவ்வொரு முறையும் கோலாவின் கீழ் (அருகிலுள்ள அல்லது மூலைவிட்டமாக) செல் இருக்கும் போது, ​​p.onGround மாறியை ஆம் என அமைத்து, வேகத்தை பூஜ்ஜியத்திற்கு மீட்டமைப்போம். மேலும், கோலாவின் கீழ் அருகிலுள்ள செல் இருந்தால், அதன் வேகத்தை பூஜ்ஜியத்திற்கு மீட்டமைக்கிறோம். இது கோலாவின் தற்போதைய வேகத்திற்கு சரியாக செயல்பட அனுமதிக்கும்.
லூப்பின் தொடக்கத்தில் onGround மாறியை NO என அமைத்துள்ளோம். இந்த நிலையில், கோலா அதன் கீழே உள்ள கலத்துடன் மோதுவதைக் கண்டறியும் போது மட்டுமே onGround ஆம் என அமைக்கப்படும். தற்போதைய நேரத்தில் கோலாவால் குதிக்க முடியுமா இல்லையா என்பதை தீர்மானிக்க இந்த அம்சத்தைப் பயன்படுத்தலாம்.
பின்வரும் குறியீட்டை தலைப்பு கோப்பில் சேர்க்கவும் (பின்னர் இயங்கக்கூடியவற்றில் தேவையான அனைத்தையும் ஒருங்கிணைக்கவும்). வீரர்.எச்:

@சொத்து (நாடாமிக், ஒதுக்க) BOOL onGround;
மற்றும் உள்ளே வீரர்.எம்:

@Synthesize onGround = _onGround;
துவக்குவோம்! எல்லாம் திட்டமிட்டபடி செயல்படுகிறதா? ஆம்! ஓ, இந்த அற்புதமான நாள்! ஹூரே!

அடுத்தது என்ன?

வாழ்த்துகள்! உங்கள் இயற்பியல் இயந்திரத்தை நீங்கள் முழுமையாக முடித்துவிட்டீர்கள்! இந்த உரையை நீங்கள் அடைந்துவிட்டால், நீங்கள் நிம்மதிப் பெருமூச்சு விடலாம். இது கடினமான பகுதியாக இருந்தது - டுடோரியலின் இரண்டாம் பகுதியில் கடினமாக எதுவும் இருக்காது.
நாங்கள் இப்போது முடித்த திட்டத்தின் ஆதாரங்கள் இங்கே உள்ளன.
இரண்டாம் பாகத்தில் எங்கள் கோலியோவை ஓடவும் குதிக்கவும் வைப்போம். தரையில் உள்ள கூர்முனைத் தொகுதிகளை எங்கள் கோலாவுக்கு ஆபத்தானதாக ஆக்கி வெற்றி தோல்வி திரைகளை உருவாக்குவோம்.
இயங்குதளங்களுக்கான இயற்பியல் இயந்திரங்களைப் பற்றி நீங்கள் இன்னும் கூடுதலான அறிவைப் பெற விரும்பினால், பின்வரும் ஆதாரங்களைப் பார்வையிட நான் உங்களுக்கு அறிவுறுத்துகிறேன்:
சோனிக் ஹெட்ஜ்ஹாக் விக்கி என்பது சோனிக் திட செல்களுடன் எவ்வாறு தொடர்பு கொள்கிறது என்பதற்கான சிறந்த விளக்கமாகும்.
உயர்-வரிசை வேடிக்கையிலிருந்து இயங்குதளங்களை உருவாக்குவதற்கான சிறந்த வழிகாட்டியாக இருக்கலாம்.
டுடோரியல் குறிச்சொற்களைச் சேர்

ஃபிளாஷ் விளையாட்டு சூப்பர் மரியோ ஃப்ளாஷ்- பிரபலமான குளோன் சூப்பர் மரியோ. இன்னும் துல்லியமாகச் சொல்வதானால், டெவலப்பர் சூப்பர் மூலம் ஈர்க்கப்பட்டார் மரியோ பிரதர்ஸ் 3, இது 1988 இல் டேண்டியில் வெளியானது. உங்களிடம் செட்-டாப் பாக்ஸ் மற்றும் கார்ட்ரிட்ஜ் இல்லையென்றால், முன்மாதிரி மற்றும் எமுலேட்டரை எவ்வாறு இயக்குவது என்பது குறித்த தேவையான அறிவு இல்லை என்றால், அது ஒரு பொருட்டல்ல. இது ஒரு இலவச கேம் மற்றும் நீங்கள் Flash இயக்கப்பட்டிருக்கும் வரை உங்கள் உலாவியில் நேரடியாக இயங்கும். உங்கள் கணினியிலிருந்து உள்நுழைந்து முயற்சிக்கவும்.

கட்டுப்பாடுகள்: சுட்டியைக் கொண்டு மெனுவிற்குச் செல்லவும், பின்னர் அம்புக்குறி விசைகள் மற்றும் ஸ்பேஸ் பார். விளையாட்டைத் தொடங்க 1 வீரரைத் தேர்ந்தெடுக்கவும்.

விளையாட்டில் நீங்கள் இரு சகோதரர்களாகவும், மரியோ மற்றும் லூய்கியாகவும் விளையாடலாம், அசல் போல. உலக வரைபடத்தைப் பயன்படுத்தி நீங்கள் நிலைகளுக்கு இடையில் செல்லலாம். இறுதியில் நீங்கள் பவுசர் என்ற முதலாளியுடனான போரில் இளவரசியைக் காப்பாற்ற வேண்டும்.

இங்கு நிலை எடிட்டரும் உள்ளார், இது எண்களின் தொகுப்பாக சேமிக்கப்படும். இந்த நிலைகளை டெவலப்பரின் இணையதளத்தில் பதிவேற்றலாம் அல்லது அதற்கு மாறாக, அங்கிருந்து புதிய நிலைகளை எடுக்கலாம்.

இது உலகம் முழுவதும்மரியோ - மற்றும் துவக்க ஒரு உள்ளமைக்கப்பட்ட எடிட்டர்

இது சூப்பர் மரியோ சகோதரர்களின் சரியான குளோனா?

கிராபிக்ஸ் மற்றும் பல பொருள்கள் துல்லியமாக நகலெடுக்கப்படுகின்றன. ஆனால் அனைத்து நிலைகளும் புதிதாக உருவாக்கப்படுகின்றன, இருப்பினும் அவை அசல் நிலைக்கு மிகவும் ஒத்தவை. நீங்கள் விரும்பினால், இணையத்தில் அதே விளையாட்டின் திரைகளைப் பெறலாம் மற்றும் நிலை எடிட்டரில் முழுமையான நகலை உருவாக்கலாம். நாங்கள் அதைச் சோதித்தோம், பொம்மை அசலுக்கு மிக நெருக்கமாக இருக்கிறது. ஆனால் இது முற்றிலும் சரியான நகல் அல்ல. இது இன்னும் சுவாரஸ்யமானது என்றாலும்.

Super Marioக்கான புதிய நிலைகள்? நான் அவற்றை எங்கே பெறுவது?

லெவல் போர்டல் பிரிவில் இந்த ஃபிளாஷ் கேமை உருவாக்குபவரின் இணையதளத்திற்குச் செல்லவும். கிளிப்போர்டு வழியாக நகலெடுத்து ஒட்டக்கூடிய ஆயிரக்கணக்கான நிலைகள் உள்ளன.

எப்படி, எப்படி நகலெடுப்பது?

வழக்கமான உரையைப் போலவே. ஒரு நிலையைத் தேர்ந்தெடுத்து, அதன் உரை மூலங்களைத் தேர்ந்தெடுத்து, நகலெடுத்து, விளையாட்டிற்குச் சென்று, எடிட்டரைத் திறந்து உரையை ஒட்டவும்.

நிலை எடிட்டரை எவ்வாறு திறப்பது, எனக்கு ஏதோ புரியவில்லை

விளையாட்டின் தொடக்கத்தில், நிலை எடிட்டரைக் கிளிக் செய்யவும். பின்னர் எழுத்துக்களில் ஒன்றைக் கிளிக் செய்க - லூய்கி அல்லது மரியோ. அதன் பிறகு, ஏற்று என்பதைத் தேர்ந்தெடுத்து, உங்களிடம் நிலைக் குறியீடு இருந்தால் ஒட்டவும்.
உங்கள் கணினியில் உள்ள வழக்கமான உரைக் கோப்பில் நிலைக் குறியீடுகளைத் தனித்தனியாகச் சேமிப்பது நல்லது.

பொதுவாக, இரண்டாவது விளையாட்டின் பக்கத்தில் எடிட்டரில் எவ்வாறு வேலை செய்வது என்பது பற்றி நீங்கள் கொஞ்சம் படிக்கலாம் - சூப்பர் மரியோ ஃப்ளாஷ் 2. இது ரஷ்ய மொழியில் உள்ளது. மேலும், விளையாட்டிலேயே அதிக சாத்தியக்கூறுகள் உள்ளன.

மரியோ ஒரு கேம் கேரக்டர், அவர் பிரபலமாகிவிட்டார் நீண்ட ஆண்டுகள். இப்போது யார் வேண்டுமானாலும் ஆன்லைனில் மரியோ விளையாடலாம். வழங்கியவர்கள் ஒரு பெரிய எண் இலவச விளையாட்டுகள், உங்கள் கணினியில் பதிவிறக்கம் செய்யாமல் முடிக்க முடியும். புகழ்பெற்ற கதாபாத்திரங்களைக் கட்டுப்படுத்தவும், எதிரிகளை எதிர்த்துப் போராடவும், சவாலான நிலைகளை முடிக்கவும் மற்றும் உங்கள் உலாவியில் வேடிக்கையாக இருங்கள். பழைய மற்றும் புதிய கேம்கள் இங்கே சேகரிக்கப்பட்டுள்ளன, அவை டான்டியில் உள்ளதைப் போன்ற நினைவுகளை புதுப்பிக்க உங்களை அனுமதிக்கும். முழு பட்டியலிலும் பலரைப் பிரியப்படுத்தும் ஒரு உன்னதமான பதிப்பு உள்ளது! முழுத் திரையில் விளையாட பரிந்துரைக்கிறோம், விளையாட்டு குறிப்பிடத்தக்க வகையில் சிறப்பாக உள்ளது.

பல வருடங்களாகத் தெரிந்த ஹீரோ. அனைவரும் மரியோ கேம்களை விளையாடியுள்ளனர், ஆனால் அந்த கதாபாத்திரம் உங்களுக்கு எவ்வளவு நன்றாக தெரியும்? ஹீரோவின் இருப்பின் அர்த்தத்தையும் யோசனையையும் புரிந்துகொள்வதற்காக அவரை இன்னும் கொஞ்சம் நெருக்கமாக அறிந்துகொள்ள உங்களை அழைக்கிறோம்.

மரியோவின் கதை

நிண்டெண்டோவின் மிகவும் பிரபலமான கதாபாத்திரங்களில் ஒன்றாகும். அவரது நம்பமுடியாத வெற்றியின் காரணமாக, அவர் நிறுவனத்தின் சின்னமாக ஆனார் மற்றும் நூற்றுக்கணக்கான வெவ்வேறு விளையாட்டுகளில் தோன்ற முடிந்தது. அவரது தற்போதைய தோற்றத்தில் அந்த பாத்திரம் உடனடியாக தோன்றவில்லை, அவர் வளர்ச்சியின் நீண்ட பாதையில் சென்றார். இது அனைத்தும் டான்கி காங் எனப்படும் ஆர்கேட் விளையாட்டில் தொடங்கியது, இது ஆர்கேட் இயந்திரங்களுக்காக 1981 இல் மீண்டும் வெளியிடப்பட்டது. விளையாட்டின் சதித்திட்டத்தின்படி, ஜம்பர் என்ற முக்கிய கதாபாத்திரம் கடினமான சோதனைகளில் தேர்ச்சி பெற்று தனது அன்பான பெண்ணைக் காப்பாற்ற வேண்டும். அந்த நேரத்தில், ஜம்பர் ஒரு தச்சராக இருந்தார் மற்றும் அவருக்கு பணக்கார பின்னணி இல்லை, ஆனால் வளர்ச்சி தொடர்ந்தது. மேலும் புதுப்பிப்புகளில், மரியோ தனது தற்போதைய பெயரைப் பெற்றார் மற்றும் ஒரு பிளம்பர் ஆனார். தோற்றம் கொஞ்சம் மாறிவிட்டது, இப்போது தலையில் ஒரு சிவப்பு தொப்பி உள்ளது, மற்றும் உடலில் ஒரு சிறப்பு ஜம்ப்சூட் உள்ளது. கணினி தொழில்நுட்பம் வளர்ந்தவுடன், டெவலப்பர்கள் மேம்பட்டனர் தோற்றம்ஹீரோ, புதிய தனித்துவமான அம்சங்களைச் சேர்க்கிறார். இன்று, ஒவ்வொரு நபரும் தங்கள் தலையில் ஒரு கதாபாத்திரத்தின் உருவத்தை உருவாக்கி, அவர் எப்படி இருக்கிறார் என்பதை அறிவார்.

சாகசத்தின் ஆரம்பம்

இன்று விளையாட்டின் முதல் அத்தியாயம் சிலருக்கு நினைவிருக்கிறது. முக்கிய வில்லன் பெரிய கொரில்லா டன்கி காங் ஆவார், அவர் மரியோ மற்றும் அவரது அன்பான பெண் போலினாவைப் பிடிக்க முடிந்தது. முக்கிய கதாபாத்திரம்பல தடைகளை கடக்க வேண்டியிருந்தது, அனைத்து சோதனைகளையும் சமாளித்து தனது காதலியை காப்பாற்ற வேண்டும். பணிகளை வெற்றிகரமாக முடித்தவுடன், மரியோ காங்கை தோற்கடித்து கூண்டில் அடைக்கிறார், ஆனால் கொரில்லாவின் மகன் தொடர்ந்து சண்டையிடுகிறான். இதன் விளைவாக, மகன் காப்பாற்றப்பட்டு குரங்கு தீவுக்குச் செல்கிறான். இங்குதான் முதல் அத்தியாயம் முடிந்தது.

அடுத்தடுத்த விளையாட்டுகளில், மரியோவும் அவரது சகோதரர் லூய்கியும் பைப்லைனை சரிசெய்து தொடர்ந்து சண்டையிடுகிறார்கள் விசித்திரமான உயிரினங்கள்மற்றும் தற்செயலாக பிரபலமான காளான் இராச்சியத்தில் முடிவடைகிறது. முக்கிய வில்லன் ஒரு குறிப்பிட்ட பவுசர், அவர் தொடர்ந்து அழகான இளவரசியை கடத்துகிறார். பெரும்பாலான மக்கள் விளையாட்டின் இந்த பகுதிகளை நன்கு அறிந்திருக்கிறார்கள். டெவலப்பர்கள் தொடரை மேம்படுத்துவதில் தொடர்ந்து பணியாற்றி வருகின்றனர், சுவாரஸ்யமான புதிய தயாரிப்புகள் தொடர்ந்து வெளிவருகின்றன, அங்கு பாத்திரம் மற்றொரு சாகசத்தில் செல்கிறது.

மரியோவின் திறமைகள்

முற்றிலும் பாதிப்பில்லாதவராகத் தோன்றும் சிறிய ஹீரோ, தனித்துவமான திறமைகளைக் கொண்டிருக்கிறார். பல திறமைகள் வெளிப்படுத்தப்பட்டன வெவ்வேறு பாகங்கள்விளையாட்டுகள். உதாரணமாக, ஒரு அத்தியாயத்தில் ஹீரோ ஒரு முழு கோட்டையையும் எளிதாக உயர்த்த முடிந்தது. மற்றொரு அத்தியாயத்தில், ஒரு துணிச்சலான பிளம்பர் ஒரு பெரிய எதிரியின் வாலைப் பிடித்து, நம்பமுடியாத வேகத்தில் சுற்றிச் சுழற்றி, பின்னர் அவரை தரையில் வீசுகிறார். மரியோ முதலில் ஜம்பர் என்று அழைக்கப்பட்டார், எனவே இந்த அம்சம் வெற்றிகரமாக தற்போதைய ஹீரோவுக்கு மாற்றப்பட்டது. பாத்திரம் பெரிய உயரத்திற்கு குதிக்கும் திறன் கொண்டது, நடைமுறையில் பயமாக இல்லை. அவரது சகோதரருக்கு மட்டுமே இதே போன்ற திறமைகள் உள்ளன, சில சமயங்களில் இன்னும் அதிகமாக குதிக்க முடியும். சில நிபந்தனைகளின் கீழ், மரியோ நெருப்பைக் கட்டுப்படுத்த முடியும், அவர் நேர்த்தியாக எதிரிகள் மீது ஃபயர்பால்ஸை எறிந்து அவற்றை அழிக்கிறார். திறமை மிகவும் மாறுபட்டது, எதிர்காலத்தில் புதிய மற்றும் அசாதாரணமான ஒன்றை எதிர்பார்க்கலாம்.

எதிரிகள் மற்றும் நண்பர்கள்

மரியோவின் உண்மையுள்ள நண்பர் அவரது சகோதரர் லூய்கி, கடினமான காலங்களில் எப்போதும் மீட்புக்கு வருவார். இந்த பாத்திரத்தை பல விளையாட்டுகளில் இருந்து அனைவரும் நன்கு அறிவார்கள். பிரபலமான இளவரசி பீச் முக்கிய கதாபாத்திரத்தின் பிரியமானவர், அவர் அடிக்கடி சிக்கலில் சிக்கி உதவி தேவை. மரியோ இளவரசியை குழந்தை பருவத்திலிருந்தே அறிந்திருக்கிறார், அவர்கள் ஒருவரையொருவர் விரும்புகிறார்கள், அவர்களுக்கு இடையே சில உணர்வுகள் உள்ளன. காதல் உறவு. உதாரணமாக, மீட்கப்பட்ட பிறகு, பீச் எப்போதும் மரியோவின் கன்னத்தில் ஒரு மென்மையான முத்தம் கொடுத்து வெகுமதி அளிக்கிறது. கேம்களில் அதிகம் அறியப்படாத கதாபாத்திரங்கள் உள்ளன: டோட், ரோசலினா மற்றும் யோஷி. அவர்கள் எப்பொழுதும் நன்மையின் பக்கம் இருப்பார்கள் மற்றும் அவரது சாகசங்களில் முக்கிய கதாபாத்திரத்திற்கு உதவுவதில் மகிழ்ச்சியடைகிறார்கள்.

மரியோ மற்றும் முழு ராஜ்ஜியத்தின் சத்திய எதிரி பவுசர். இது ஒரு வகையான அசுரன், இது ஒரு கூர்முனை ஓடு கொண்ட பெரிய ஆமையை ஒத்திருக்கிறது. காளான் இராச்சியம் முழுவதும் பவுசர் தொடர்ந்து அதிகாரத்தைக் கைப்பற்ற முயற்சிக்கிறார், ஆனால் ஒரு துணிச்சலான பிளம்பர் எப்போதும் தனது வழியில் நிற்கிறார், முழு உலகத்தையும் காப்பாற்ற எந்த நேரத்திலும் செல்ல தயாராக இருக்கிறார். இது நன்மைக்கும் தீமைக்கும் இடையிலான நித்திய மோதல். வாரியோ என்ற குறைவான ஆபத்தான எதிரி இருக்கிறார். இந்த ஹீரோ ஒரு உண்மையான தொழிலதிபர் மற்றும் எப்போதும் மரியோவுடன் போட்டியிடுகிறார். சில சூழ்நிலைகளில், இரண்டு கதாபாத்திரங்கள் வெற்றியை அடைய ஒரு பொது எதிரிக்கு எதிராக அணிசேர்கின்றன. இத்தகைய காட்சிகள் பொதுவாக சிறியவை, ஆனால் மிகவும் இனிமையானவை.

மரியோ உலகம்

பிரபலமான ஹீரோவுடன் கேம்கள் உலகம் முழுவதும் அதிகம் விற்பனையாகும் கேம்கள். இது சுவாரஸ்யமான உண்மைஅதுவும் கூட நவீன செய்திசிக் கிராபிக்ஸ் மற்றும் சிக்கலானது கதைக்களம்ஒரு எளிய பிளம்பரை விட முடியாது. மரியோவின் முழு இருப்பு முழுவதும், சுமார் 200 கேம்கள் வெளியிடப்பட்டுள்ளன. ஒரு குறிப்பிட்ட சதித்திட்டத்தின்படி பெரும்பாலான செயல்கள் வெளிவருகின்றன, அங்கு நீங்கள் இளவரசியைக் காப்பாற்றி அனைத்து எதிரிகளையும் தோற்கடிக்க வேண்டும் அல்லது வில்லன் பவுசரை நிறுத்த வேண்டும். 8-பிட் டேண்டி கன்சோல்களில் இருந்த மரியோவைப் பற்றிய சில முதல் விளையாட்டுகள் பலருக்கு நன்றாக நினைவிருக்கிறது. இன்று, தொழில்நுட்பம் வெகுதூரம் முன்னேறியுள்ளது மற்றும் கன்சோல்கள் கடந்த காலத்தின் ஒரு விஷயம், அவை இனி விற்பனையில் இல்லை. டெவலப்பர்களின் விடாமுயற்சிக்கு நன்றி, பிரபலமான ஹீரோ வெற்றிகரமாக நவீன கணினிகளுக்கு செல்ல முடிந்தது. பிரபலம் தொடர்ந்து வளர்ந்து வருகிறது, அதாவது சுவாரஸ்யமான புதிய தயாரிப்புகள் மற்றும் அமெச்சூர் பதிப்புகள் வெளியிடப்படுகின்றன. இப்போது உங்கள் உலாவி சாளரத்தில் ஆன்லைனில் மரியோவை எளிதாக விளையாடலாம். வசதியான ஃபிளாஷ் கேம்கள் உங்கள் கணினியில் கோப்புகளைப் பதிவிறக்காமல் உங்களுக்குப் பிடித்த கேம்களை விளையாட அனுமதிக்கின்றன.

மரியோவின் தோற்றம் மற்றும் தன்மை

கதாபாத்திரத்தின் தோற்றம் அனைவருக்கும் தெரியும். அவரை தோராயமாக பின்வருமாறு விவரிக்கலாம்: குட்டையான உயரம் கொண்ட ஒரு குண்டான மனிதர், அவர் ஒரு பிளம்பராக வேலை செய்கிறார். அவர் எப்போதும் தனது வழக்கமான ஆடைகளை அணிவார்: நீல நிற மேலோட்டங்கள், அதில் இருந்து சிவப்பு சட்டை தெரியும், மேலும் அவரது மார்பில் எப்போதும் இரண்டு பெரிய தங்க பொத்தான்கள் இருக்கும். அவரது தலையில் ஹீரோவின் பெயரின் நினைவாக M என்ற எழுத்துடன் சிவப்பு தொப்பி உள்ளது. மரியோ எப்போதும் மீசையை அணிவார், பலர் பிளம்பர்களுடன் தொடர்பு கொள்கிறார்கள். காலப்போக்கில், ஹீரோவின் அனைத்து உபகரணங்களும் பெறப்பட்டன நடைமுறை பயன்பாடு. உதாரணமாக, ஒரு தொப்பி ஒரு முக்கியமான பாதுகாப்பு பொருள். ஹீரோ அதை இழந்தால், அவர் எதிரிகள் மற்றும் பிற செயல்களால் அதிக சேதத்தைப் பெறுகிறார். கதாபாத்திரத்தின் ஆரம்ப தோற்றம் மிகவும் பழமையானது, இது வரையறுக்கப்பட்ட கணினி வளங்களால் விளக்கப்பட்டது. வரைவதற்கு மிகக் குறைந்த எண்ணிக்கையிலான பிக்சல்கள் பயன்படுத்தப்பட்டன, ஆனால் கணினிகளின் வளர்ச்சியானது ஒரு முழு அளவிலான தோற்றத்தை உருவாக்குவதை சாத்தியமாக்கியது, அங்கு ஒவ்வொரு சிறிய விவரமும் தெரியும்.

மரியோவின் பாத்திரத்துடன், விஷயங்கள் மிகவும் நிச்சயமற்றவை. டெவலப்பர்கள் ஆராய வேண்டாம் என்று முடிவு செய்தனர் தார்மீக கோட்பாடுகள், ஹீரோவுக்கு எந்த சிக்கலான குணநலன்களையும் கொடுக்காதீர்கள். ஒவ்வொரு நபரும் படத்தை உருவாக்கி இறுதி செய்கிறார்கள். தொடர் விளையாட்டுகளின் அடிப்படையில், மரியோ ஒரு துணிச்சலான பிளம்பர் என்று உறுதியாகச் சொல்லலாம், அவர் தொடர்ந்து நன்மையின் பக்கம் போராடுகிறார். அவனுடைய நீதி உணர்வு அவனை ஆபத்தான செயல்களைச் செய்யத் தள்ளுகிறது; பெரும்பாலும், அத்தகைய நேர்மறையான பண்புகள் காரணமாக, ஹீரோ மிகவும் பிரபலமானார்.

இந்த பக்கத்தில், மரியோ தொடர் கேம்களைப் பற்றி நன்கு தெரிந்துகொள்ள உங்களை அழைக்கிறோம். இங்கே குறிப்பிடப்பட்டுள்ள பல்வேறு வகைகள் உள்ளன, அவற்றில் நீங்கள் வழக்கமான ஆர்கேட்கள் மற்றும் பந்தயங்களைக் காணலாம், ஆனால் அசாதாரண புதிர்கள் மற்றும் சண்டைகளும் உள்ளன. கிளாசிக் சேர்க்கப்பட்டது பழைய பதிப்பு சூப்பர் கேம்கள்மரியோ பிரதர்ஸ். கிராஸ்ஓவர், டேண்டி கன்சோல்களில் பலர் விரும்பினர். நீங்கள் ஆன்லைனில் இலவசமாக விளையாடலாம், அனைத்து ஃபிளாஷ் பயன்பாடுகளும் பதிவு இல்லாமல் கிடைக்கும்.

ஃபிளாஷ் விளையாட்டின் விளக்கம்

சூப்பர் மரியோ பல வீரர்களின் விருப்பமான விளையாட்டு. எல்லாவற்றிற்கும் மேலாக, இது மிக நீண்ட காலத்திற்கு முன்பு உருவாக்கப்பட்டது. இது ஏற்கனவே பல முறை நிறைவேற்றப்பட்டுள்ளது, மேலும் இது மிகவும் பிரியமான ஒன்றாக உள்ளது பிரபலமான விளையாட்டுகள்டான்டி கேம் கன்சோலில். பின்னர், நிறைய வெளியிடப்பட்டது மரியோ விளையாட்டுகள், மிகவும் வித்தியாசமானது. ஆனால் இன்று உங்களுக்கு வாய்ப்பு கிடைத்துள்ளது விளையாடுவழிபாட்டுத் தொடரின் தொடர்ச்சியாக. இப்போது மரியோ அவசரமாக உங்கள் பத்தியில் தேவைப்படும் புதிய நிலைகளைக் கொண்டுள்ளது. நீங்கள் விளையாட்டிற்குள் நுழையும்போது, ​​​​நீங்கள் நீண்ட காலமாக விளையாட்டுக்குத் திரும்புவதற்காகக் காத்திருக்கும் அன்பான மற்றும் பழக்கமான பாத்திரத்தை நீங்கள் காண்பீர்கள். மரியோவின் உலகில், எல்லாமே ஒரே மாதிரியாகவே இருக்கின்றன, பல்வேறு உயிரினங்கள் அவருக்கு மரணத்தை விரும்புகின்றன, ஆனால் அவர் கைவிடவில்லை மற்றும் முன்னோக்கி நகர்கிறார், அதே நேரத்தில் தங்க நாணயங்களை சேகரித்தார். உங்கள் வாழ்க்கையை இழந்து மீண்டும் தொடங்கக்கூடிய நிலைகளில் நிறைய ஆபத்தான இடங்கள் உள்ளன, எனவே அவற்றை தீவிர கவனத்துடன் செல்லுங்கள். புதிய நிலைகள் பழையவற்றைப் போலவே சுவாரஸ்யமானவை, ஏனென்றால் அவை கதையின் தொடர்ச்சியைக் கூறுகின்றன. அவற்றைப் பார்த்த பிறகு, விளையாட்டின் முதல் பகுதியின் நிகழ்வுகளுக்குப் பிறகு கதாபாத்திரத்திற்கும் அவரது நண்பர்களுக்கும் என்ன நடந்தது என்பதை நீங்கள் கண்டுபிடிப்பீர்கள். ஏற்கனவே ஆர்வமா? பிறகு ஓடி விளையாடு! உங்களுக்கு பிடித்த கதாபாத்திரம் எதிரி மனித உருவங்களின் இராணுவத்தை சமாளிக்க உதவும்.