プレイヤーが弾を発射するボタンを押した時、たまにアニメーションとSEが再生されず、弾が飛んで行くだけになることがあります。
↓スクリプト「Player」内の弾発射に関するコード(void FixedUpdateに収納)
if (CrossPlatformInputManager.GetButtonDown("Attack")) //New { anim.SetBool("attack", true); anim.Play("player_attack"); GManager.instance.PlaySE(attackSE); } else { anim.SetBool("attack", false); }
↓「Player」と別でプレイヤーに付いている弾発射用スクリプト
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityStandardAssets.CrossPlatformInput; //New public class PlayerBullet : MonoBehaviour { [SerializeField] public GameObject bullet; public Player player; public int m_shotCount; //New void Start() { } void Update() { ShotAction(); } void ShotAction() { if (CrossPlatformInputManager.GetButtonDown("Attack")) //New { Vector3 offset = new Vector3(1.0f, 0.0f, 0.0f); bool isLeft = player.isLeft; if (isLeft) { offset.x = -offset.x; } var bulletObj = Instantiate(bullet, transform.position + offset, transform.rotation); bulletObj.transform.localScale = new Vector3(isLeft ? -1 : 1, 1, 1); bulletObj.GetComponent<Bullet>().SetDirection(isLeft); } } }
<試したこと>
二つのスクリプトが別々にプレイヤーに付いていることが原因ではと考え、「PlayerBullet」のコードを全て「Player」内に移してみましたが、変わりませんでした。
この現象が発生するタイミングは「たまに」であり、「特定の動作をした時」や「特定の地点にプレイヤーが来た時」など決まっている訳ではありません。現象が起こった次の瞬間には、発射ボタンを複数回連打しても、ちゃんと押した回数分アニメーションやSEが再生され、ボタン1回につき1発弾が発射されます。
そのため、「PCのスペックの問題なのでは?」とも考えています。ゲームを動かす時も、起動に時間がかかっていますし。
PC:dynabook AB45/PG (PAB45PG-SHA) (5年前に新品で買いました)
Windows10を使用
Unityバージョン:Unity 2019.2.15f1 (64-bit)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/27 08:54
2020/05/27 08:59
2020/05/27 09:44