【Unity2D】プレイヤーにダッシュを実装しよう!

Unity

今回は、プレイヤーにダッシュを実装する方法を記述していこうと思います。

スクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerDash : MonoBehaviour
{
    [SerializeField] float dashingForce;
    [SerializeField] float dashingTime;
    [SerializeField] float dashCoolDown;

    bool isDashing = false;
    bool canDash = true;

    Rigidbody2D rb;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }
    
    void Update()
    {
        if (Input.GetMouseButtonDown(1) && canDash) 
        {
           StartCoroutine(Dash());//ダッシュのコルーチン開始
        }

        if (isDashing)//ダッシュ中なら何もしない
            return;
    }

    //ダッシュ
    private IEnumerator Dash() 
    {
        isDashing = true;
        canDash = false;

        float originalGravity = rb.gravityScale;//元の重力を代入
        rb.gravityScale = 0;
        rb.velocity = new Vector2(transform.localScale.x * dashingForce, 0);//重力がない状態で向いてる方向にダッシュ

        yield return new WaitForSeconds(dashingTime);

        rb.gravityScale = originalGravity;//重力をもとに戻す
        isDashing = false;
        rb.velocity = new Vector2(0, 0);//速度を0にする

        yield return new WaitForSeconds(dashCoolDown);

        canDash = true;
    }
}

これで右クリックでダッシュをすることができます。

このスクリプトをプレイヤーにアタッチし、それぞれの項目を入力します。

Dashing Force: ダッシュ時にプレイヤーに加える力

Dashing Time:ダッシュの持続時間

Dash Cool Down:ダッシュのクールダウン

これで実行をすると

ダッシュの完成です!

まとめ

今回は、簡単な記事になってしまいましたねw

スクリプトの内容は簡単で、プレイヤーの重力をゼロにし、そこに速度(Velocity)を加えるだけです。

それをコルーチンで持続時間やクールダウンを制御してるわけです。

タイトルとURLをコピーしました