質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

836閲覧

アニメーションやSEが再生されずに、弾だけ出ることがある

unity_user_a

総合スコア23

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/05/27 08:11

プレイヤーが弾を発射するボタンを押した時、たまにアニメーションと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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

FixedUpdate()内で入力を受け取るような関数を使ってはいけないので、それが原因かと。

投稿2020/05/27 08:34

fiveHundred

総合スコア9803

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unity_user_a

2020/05/27 08:54

ご回答、ありがとうございます! では、void Update() に移せば良いでしょうか?
unity_user_a

2020/05/27 09:44

void Update()にコードを移動させた所、今動作確認をしてみた限りでは、問題の現象が起こらなくなりました。 今までなら現象が見られたタイミングでも起きていないので、解決できたと思います。 ありがとうございました! ベストアンサーと高評価、フォローをさせて頂きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問