Unity 用 2D 近接攻撃チュートリアル
Unity エンジン は、2D ゲームと 3D ゲームの両方を作成するための広範なプラットフォームを提供します。多くのアクション ゲームの基本要素の 1 つは近接攻撃です。2D 環境では、このような攻撃は多くの場合、キャラクターが武器を振ったり、パンチを投げたりすることで構成され、Unity アニメーション、物理学、およびスクリプト ツールの組み合わせを使用して実行できます。
前提条件
- Unity エンジンがインストールされ、セットアップされています。
- Unity インターフェイスと 2D 空間 に関する基本的な知識。
1. プロジェクトとシーンのセットアップ
- 新しい 2D Unity プロジェクトを 作成します (まだ作成していない場合)。
- キャラクタースプライトをインポートまたは作成します。シーンに配置します。
2. 近接攻撃アニメーションの設定
- プロジェクト ウィンドウで右クリックし、"Animator Controller" を作成します。"CharacterAnimator" という名前を付けます。
- キャラクターを選択し、アニメーターを "Animator" コンポーネントにドラッグすることで、このアニメーターをキャラクターに割り当てます。
- アニメーションウィンドウを開きます。キャラクターを選択した状態で、"MeleeAttack" という名前の新しいアニメーションを作成します。
- 話を簡単にするために、この攻撃が素早いパンチであると仮定しましょう。スプライトをアニメーション化して、このアクションをシミュレートします。
3. 攻撃のヒットボックスを作成する
- 空の GameObject を子としてキャラクターに追加します。これが攻撃の当たり判定として機能します。
- と "Box Collider 2D" を空のゲームオブジェクトにアタッチします。パンチ中にキャラクターが当たる場所に合わせてサイズと位置を調整します。
- "Active" ボックスのチェックを外してヒットボックスを無効にします。これにより、攻撃アニメーション中にのみアクティブになることが保証されます。
4. 攻撃ロジックのスクリプト作成
- という新しいスクリプトを作成し、"MeleeAttack" という名前を付けて、その中に以下のコードを貼り付けます。
'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);
}
}
- に "MeleeAttack" スクリプトを 主人公 にアタッチします。
- アニメーションに基づいてヒットボックスの有効化と無効化のタイミングを調整します。
- ヒットボックス コライダーをヒットボックス 変数 に割り当てます。
5. 衝突の処理
- 敵ゲームオブジェクトのタグを "Enemy" に変更します。
- という新しいスクリプトを作成し、"Hitbox" という名前を付けて、その中に以下のコードを貼り付けます。
'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);
}
}
}
- スクリプト "Hitbox" をヒットボックス オブジェクトにアタッチします。
対処すべき質問:
- ヒットボックスはアニメーション中にいつアクティブになるかをどのように判断しますか?: ヒットボックスは、'MeleeAttack.cs' スクリプトの 'Invoke' 関数によってアクティブになります。攻撃が着地するフレームに基づいてタイミングを調整できます。
- ヒットボックスが一度に複数の敵と衝突するとどうなりますか? : 提供されている 'Hitbox' スクリプトを使用すると、ヒットボックスに衝突したタグ "Enemy" を持つ各敵が破壊されます。スクリプトを調整してダメージやその他の効果を管理します。
- 攻撃ボタンはスペース キーから変更できますか?: はい、'MeleeAttack.cs' スクリプトの if ('Input.GetKeyDown(KeyCode.Space)') 行はスペース キーの押下をチェックします。 。'KeyCode.Space' を別の 'KeyCode' の値に置き換えて、攻撃ボタンを変更します。
結論
このガイドでは、Unity で 2D 近接攻撃を実装するための基本的なフレームワークを提供します。サウンド効果、視覚的フィードバックの追加、ヒット検出 ロジックの改良などの機能強化により、近接攻撃のエクスペリエンスをさらに向上させることができます。