Rakendage tabamuse tuvastamine igat tüüpi MapChipi jaoks

Lehekülg uuendatud :
Lehe loomise kuupäev :

Kontrollimise keskkond

Windows
  • Windows 11
Ühtsuse toimetaja
  • 2021.3.3f1
Sisendsüsteemi pakett
  • 1.3.0

Selle näpunäite eeltingimused

Selle vihje kirjeldamise eelduseks on eelnevalt tehtud järgmised sätted.

Millised on selle näpunäite eeldused?

Kaardimaterjalide laenamisest

Töötleme laenatud järgmistelt saitidelt.

Alguses

Seekord paigutatakse MapChips ühte TileMapi ja otsustatakse, kas teha tabamuse määramine vastavalt paigutatud MapTipi tüübile.

Kuna see näpunäide on suures osas sama, mis teine näpunäide "Rakendage tabamuse tuvastamine tilekaartidega", Üksikasjaliku selgituse saamiseks vaadake palun sealt. Siin selgitatakse sama sisu puhul ainult protseduuri ja lisatakse ainult erinevused.

Kõndimismärkide rakendamine

Kõigepealt valmistage ette spraidipilt, mida mängija kontrollib tabamuse tuvastamise toimingu tegemiseks, ja lisage see oma projekti. Seekord on kaardispikri suurus 32 pikslit, seega teen pildi sama suurusega.

Jätan seekord kõndimisanimatsiooni välja, sest protseduur on pikk, kui seda rakendatakse. Kui soovite seda rakendada, lugege palun järgmisi näpunäiteid.

Valige pilt, mille lisasite oma projekti. Kuna tahame ühiku kaardikiibiga sobitada, määrake "Pikslite arv ühiku kohta" väärtuseks "32".

Kui see on konfigureeritud, klõpsake allpool olevat nuppu "Rakenda".

Kui pilt on seatud, kukutage pilt vaatesse ja lisage objekt.

Määrake märgi liikumisprotsess. Lisage skript ja jätke selle nimi Player .

Skript näeb välja selline: See on lihtne liikumisprotsess, mis liigutab spraiti klaviatuuriga.

using UnityEngine;
using UnityEngine.InputSystem;

public class Player : MonoBehaviour
{
  // 一定時間ごとに呼ばれます
  void FixedUpdate()
  {
    // キーボードの情報を取得
    var keyboard = Keyboard.current;

    // スプライトの移動処理
    if (keyboard.leftArrowKey.isPressed)
    {
      transform.Translate(-0.1f, 0, 0, Space.World);
    }
    if (keyboard.rightArrowKey.isPressed)
    {
      transform.Translate(0.1f, 0, 0, Space.World);
    }
    if (keyboard.upArrowKey.isPressed)
    {
      transform.Translate(0, 0.1f, 0, Space.World);
    }
    if (keyboard.downArrowKey.isPressed)
    {
      transform.Translate(0, -0.1f, 0, Space.World);
    }
  }
}

Loodav skript kinnitub märgiobjektile.

Käivitage mäng ja kontrollige, kas märk liigub klaviatuuriga.

MapTipsi ettevalmistamine

Valmistage ette kohtspikri pilt ja lisage see oma projekti. Kui kaardikiipide arv suureneb, muutub seadistamine tülikaks, nii et seekord oleme ette valmistanud ainult kaks ruutu, ühe, mida saab kõndida ja teise, mis ei saa kõndida.

Valige oma projekti lisatud pildid ja konfigureerige MapChipsi sätted. Lisateabe saamiseks vaadake järgmisi näpunäiteid.

Pärast konfigureerimist klõpsake nuppu Rakenda ja seejärel nuppu Sprite Editor.

Jagage 32 piksliga.

Paleti loomiseks valige vahekaart Paanipalett. Kui vahekaarte pole, saate neid menüüst kuvada "Window > 2D -> Tile Palette". Paleti nimi võib olla midagi, kuid siin on see "MapChipPalette".

Kuna salvestame selle kausta, looge stseeni kausta uus kaust "MapChipPalette" ja täpsustage see.

Projektile on lisatud kaust MapChipPalette.

Järgmisena lisate paletti MapTips. Lohistage tükeldatud kohtspikri pilt paletile.

Paletti on lisatud maptips.

Kaardi loomine

Jätke tabamuse tuvastamise sätted kõrvale ja looge kõigepealt kaart. Päringutabamuse tuvastamise saate seadistada hiljem. Esmalt lisage hierarhiasse paanikaart.

Pärast lisamist valige Tilemap. Vaates kuvatakse ruudustik.

Kõigepealt seadke kaardikiip, mis ei muutu vaates seinaks.

Praegu panin selle kogu koha peale.

Seejärel asetage kivist kaart, mis toimib seinana.

Seekord polnud probleemi, kuid kui teie tegelane jääb kaardi taha, seadke kihijärjestus Tilemapist suuremale arvule.

Muidugi, isegi kui liigutate mängu sel hetkel, libisete läbi seina ja kõnnite.

MapChipi tabamuse tuvastamise seaded

Siit määrame, kas sisestada iga kaardikiibi tüübi kohta tabamusotsus. Esmalt avage kaust "MapChipPalette", mille lõite paleti loomisel.

Paleti sees on kaardispikker, nii et kõigepealt valige kaardispikker, millel saate kõndida.

Määrake inspektorist väärtuseks Collideri tüüp Pole. Hiljem lisate Tilemapile kokkupõrke tuvastamise sätte, kuid selle seadmine väärtusele "Puudub" takistab selle kaardikiibi kokkupõrget.

Teine kivist maptip on seatud väärtusele "Grid". Kuna see pole seekord läbipaistev kaardispikker, pole "spraidiga" probleeme, kuid kui seate selle väärtuseks "sprite", ei hinnata seda pildi läbipaistva osa löömisega.

See on kõik, mis MapTipile on olemas. See on lihtne, sest neid on seekord ainult kaks, kuid kui teil on palju kaardikiipe, peate selle palju määrama.

Kokkupõrke tuvastamise seaded

Siit on see peaaegu sama, mis sisu "Rakenda tabamuse tuvastamine tilemapiga".

Esiteks tehke märkide kokkupõrke tuvastamiseks vajalikud seaded. Lisage komponendina "Physics 2D -> Circle Collider 2D". Seekord on sprait ümmargune, nii et tegin selle ringiks, kuid palun valige kast või kapsel vastavalt kujule.

Lisame ka "Physics 2D -> Rigidbody 2D".

Seadke gravitatsiooniskaala väärtuseks 0, et vältida gravitatsiooni langemist. Samuti kontrollige Z-i "Fix rotation", et vältida spraidi pöörlemist.

Tilemapi jaoks lisage komponent Tilemap -> Tilemap Collider 2D.

Näete, et vaates on kivist kaarditipu ümber lisatud roheline joon. See tähendab, et tabamuse tuvastamine on seatud ainult kividele. Näete, et ülaltoodud paleti kaardispikri kollektori tüübi seadistus kajastub.

Proovige mängu joosta ja seina poole kõndida. Ma arvan, et saate veenduda, et tegelane peatub seina ees korralikult. Näete, et seda saab hõlpsasti rakendada ilma tabamuse tuvastamisega seotud programme kirjutamata.

MapChipi tabamuse tuvastamise kombineerimine

Nagu allpool toodud näpunäidetes mainitud, on seina löögi tuvastamise käitumine selle tegelikul liigutamisel veidi kummaline. Põhjust ja lahendust on kirjeldatud allolevates näpunäidetes.

Kaardikiibi tabamuse tuvastamise osa kombineerimisel korrigeeritakse aga kummalist käitumist ja samal ajal vähendatakse töötlemiskoormust, nii et teeme seda minimaalselt.

Kõigepealt kontrollige Tilemap Collider 2D-s "Kasutamine komposiidis".

Valige jaotises Lisa komponent suvand Physics 2D -> Composite Collider 2D.

Lisatakse ka "Rigidbody 2D", nii et tehke "Body Type" väärtuseks "Static".

Siis arvan, et võite kinnitada, et kivi tabamus ei ole iga kaardikiibi jaoks ja see on kombineeritud.

Nüüd käivitage mäng ja veenduge, et see töötab korralikult.