(Unity)連射モード時のムラをなくす(UpdateとFixedUpdateの違い)

(1)Updateの場合

  • 連射時にムラが出る。


(スクリプト)

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

public class Missile : MonoBehaviour
{
    public GameObject missilePrefub;
    public float missilespeed;
    public AudioClip Sound;
    private int timecount;

    // Update・・・>毎フレームごとに呼ばれる(フレームレートの変動の影響を受ける)
    // FixedUpdate・・・>一定秒後ごとに呼ばれる(間隔が一定になるメリットあり)
    void FixedUpdate()
    {
        if (Input.GetButton("Jump"))
        {
            timecount += 1;

            if (timecount % 2 == 0)
            {
                GameObject missile = Instantiate(missilePrefub, transform.position, Quaternion.identity);
                Rigidbody missilerb = missile.GetComponent<Rigidbody>();
                missilerb.AddForce(transform.forward * missilespeed);
                AudioSource.PlayClipAtPoint(Sound, Camera.main.transform.position);
                Destroy(missile, 2);
            }
        }
    }
}

(FixedUpdateの場合)

  • 連射が綺麗に一定間隔になる。