Խնդրի լուծման միայն մեկ լուծում չկա. Խնդիրները լուծելու բազմաթիվ եղանակներ կան։

Վերանայելով 2D Space Shooter նախագիծը: Ես որոշ առաջադրանքներ էի անցնում և որոշեցի աշխատել Enemy Shields-ի ներդրման վրա:

Նպատակը. Թշնամու վահանի վարքագիծ ստեղծել ստեղծագործական և եզակի ձևով, որպեսզի այն աշխատի փորձությունների և սխալների և բազմաթիվ փորձարկումների միջոցով:

Այս գործընթացը սկսելու համար ես կրկնօրինակեցի իմ Player Shield GameObject-ը:

Մենք մտնելու ենք Enemy Prefab և մեր նոր թշնամու վահանը դարձնելու ենք ծնող թշնամու երեխային:

Թշնամու վահանի վարքագծի իրականացում:

The Enemy Shield-ը պետք է ունենա իր սեփական սցենարը կցված:

Եկեք բաժանենք այն, ինչ մեզ անհրաժեշտ է Թշնամու վահան տրամաբանությունը ստեղծելու համար:

  • OnTriggerEnter2D-ի բախման հայտնաբերում
  • Առողջության քանակի փոփոխականը սահմանված է ամբողջ աշխարհում
  • Հղում PlayerProjectileդասի սցենարին
  • Բաղադրիչի մուտք դեպի Rigidbody2D
  • GameObjectսկրիպտը կցված է

Հիմա եկեք տեսնենք, թե ինչպես եմ այս կոնկրետ համակարգը աշխատել:

Ես կարողացա ստեղծագործորեն մոտենալ այս սցենարին, և ինչ-որ կերպ ես չգիտեի, թեստավորումից հետո, որ սա այս գործառույթն իրականացնելու եղանակներից մեկն է:

Բացի այդ, մենք պետք է տեսնենք՝ արդյոք մյուս gameObject-ի պիտակը կհայտնաբերվի PlayerProjectile-ի կողմից:

Եթե ​​մենք դա հաջողությամբ արեցինք, մենք պետք է ստանանք PlayerProjectile սցենարի ժառանգությունը:

Այստեղից մենք ստանում ենք Rigidbody2D բաղադրիչը և անցնում հատկությունների մեջ.

  • collisionDetectionMode = collisionDetectionMode.Continous (Ապահովում է, որ բոլոր բախումները հայտնաբերվում են, երբ Rigidbody2D-ը շարժվում է)
  • collisionDetectionMode = collisionDetectionMode: Դիսկրետ (Միայն բախումները հայտնաբերվում են, երբ Rigidbody2D-ը տեղափոխվում է նոր դիրք)

Օգտագործելով դիսկրետ հատկությունը՝ այն հիանալի աշխատեց իմ իրականացման համար. Եվ ես վստահ եմ, որ կան շատ այլ ուղիներ այս նույն հատկությունն իրականացնելու համար: