Handledning för 2D-närstridsattack för Unity
Unity Engine ger en omfattande plattform för att skapa både 2D- och 3D-spel. Ett av grundelementen i många actionspel är närstridsattacken. I en 2D-miljö består en sådan attack ofta av att en karaktär svingar ett vapen eller slår ett slag, och det kan åstadkommas med en kombination av Unity-animationer, fysik och skriptverktyg.
Förutsättningar
- Unity Motor installerad och inställd.
- Grundläggande förtrogenhet med Unity gränssnitt och 2D space.
1. Ställa in projektet och scenen
- Skapa ett nytt 2D Unity-projekt (om det inte har gjort det ännu).
- Importera eller skapa en karaktärssprite. Placera den i scenen.
2. Konfigurera Melee Attack Animation
- I projektfönstret, högerklicka och skapa en "Animator Controller". Döp det till "CharacterAnimator".
- Tilldela denna animatör till karaktären genom att välja karaktären och dra animatören till "Animator"-komponenten.
- Öppna animeringsfönstret. Med karaktären vald, skapa en ny animation med namnet "MeleeAttack".
- För enkelhetens skull, låt oss anta att denna attack är ett snabbt slag. Animera spriten för att simulera denna åtgärd.
3. Skapar Attack Hitbox
- Lägg till ett tomt GameObject som ett barn till karaktären. Detta kommer att fungera som hitbox för attacken.
- Bifoga en "Box Collider 2D" till det tomma GameObject. Justera dess storlek och position för att matcha var karaktären skulle slå under stämpeln.
- Inaktivera hitboxen genom att avmarkera dess "Active" ruta. Detta säkerställer att den bara aktiveras under attackanimeringen.
4. Skripta attacklogiken
- Skapa ett nytt skript, namnge det "MeleeAttack" och klistra sedan in koden nedan i det:
'MeleeAttack.cs'
using UnityEngine;
public class MeleeAttack : MonoBehaviour
{
private Animator animator;
private BoxCollider2D hitbox;
private void Start()
{
animator = GetComponent<Animator>();
hitbox = transform.Find("HitboxGameObjectName").GetComponent<BoxCollider2D>();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) // Attack on Space key press.
{
animator.SetTrigger("MeleeAttack");
Invoke("ActivateHitbox", 0.2f); // Activate hitbox after 0.2 seconds.
Invoke("DeactivateHitbox", 0.4f); // Deactivate hitbox after 0.4 seconds.
}
}
void ActivateHitbox()
{
hitbox.gameObject.SetActive(true);
}
void DeactivateHitbox()
{
hitbox.gameObject.SetActive(false);
}
}
- Bifoga skriptet "MeleeAttack" till huvudpersonen.
- Justera hitboxens aktiverings- och avaktiveringstider baserat på animationen.
- Tilldela hitbox-kollideren till Hitbox variabeln.
5. Hantering av kollisioner
- Ändra taggarna för fiendens spelobjekt till "Enemy".
- Skapa ett nytt skript, namnge det "Hitbox" och klistra sedan in koden nedan i det:
'Hitbox.cs'
using UnityEngine;
public class Hitbox : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Enemy"))
{
// Damage or destroy the enemy.
Destroy(collision.gameObject);
}
}
}
- Bifoga skriptet "Hitbox" till hitbox-objektet.
Frågor att lösa:
- Hur vet hitboxen när den ska aktiveras under animeringen?: Hitboxen aktiveras av 'Invoke'-funktionen i 'MeleeAttack.cs'-skriptet. Timingen kan justeras baserat på ramen där attacken är tänkt att landa.
- Vad händer om hitboxen kolliderar med flera fiender samtidigt?: Med det medföljande 'Hitbox'-skriptet kommer varje fiende med taggen "Enemy" som kolliderar med hitboxen att förstöras. Justera skriptet för att hantera skador eller andra effekter.
- Kan attackknappen ändras från mellanslagstangenten?: Ja, i 'MeleeAttack.cs'-skriptet kontrollerar raden if ('Input.GetKeyDown(KeyCode.Space)') efter mellanslagstangenttryckningen. Byt ut 'KeyCode.Space' med ett annat 'KeyCode' värde för att ändra attackknappen.
Slutsats
Den här guiden ger ett grundläggande ramverk för att implementera en 2D-närstridsattack i Unity. Förbättringar som att lägga till ljudeffekter, visuell feedback och förfining av hitdetektering-logiken kan ytterligare förbättra upplevelsen av närstridsattacker.