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

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

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

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

1840閲覧

「Attack」ボタン1タッチで弾が複数発射されてしまう

unity_user_a

総合スコア23

Unity

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2020/05/23 13:11

Unityで2Dの横スクロールアクションゲームを制作しています。
制作したゲームを自分のiphone7で操作できる様に、スクリプトのコードを一部書き換えました。
参考サイト https://goodlucknetlife.com/unitychan-screen-edge-freeze/

現状、「スティックで左右に移動」、「Jumpボタンをタッチしてジャンプする」、「Attackボタンをタッチして弾を発射する」ことが出来る様にはなりました。
ただ、「Attack」ボタンを1タッチしただけで、弾が複数発射されてしまいます。
PCでキー操作していた時は、spaceキー1回で1発発射になっていたのですが。
イメージ説明

PlayerのAttackに関するコード (void FixedUpdate()内)

if (CrossPlatformInputManager.GetButton("Attack")) //New { anim.SetBool("attack", true); anim.Play("player_attack"); GManager.instance.PlaySE(attackSE); } else { anim.SetBool("attack", false); } }

<試したこと>
プレイヤーについているPlayerBullet.csに「public int m_shotCount;」を追加、インスペクターで数値を「1」に設定しましたが、変化はありませんでした。

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.GetButton("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); } } }

参考サイト https://baba-s.hatenablog.com/entry/2018/04/01/152700

スティックとJumpボタンは、「Standard Assets」の「MobileSingleStickControl」のものをサイズや色を変えて使用しています。
https://assetstore.unity.com/packages/essentials/asset-packs/standard-assets-for-unity-2017-3-32351
イメージ説明

Attackボタンは自分で作成し、Jumpボタンに合わせて「ButtonHandler」や「Event Trigger」を追加しました。
イメージ説明
イメージ説明

Unityバージョン:Unity 2019.2.15f1 (64-bit)

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

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

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

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

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

guest

回答1

0

ベストアンサー

GetButtonだと、タップしている間イベントが呼ばれるのが原因てことはないでしょうか。
なので、以下いずれかに変更してみるのはいかがでしょうか。

  • GetButtonDown
  • GetButtonUp

投稿2020/05/23 13:39

tsuki01

総合スコア1751

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

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

unity_user_a

2020/05/24 06:46

ご回答、ありがとうございます! GetButtonDown に変更した所、1タッチにつき1発になりました。 ベストアンサーと高評価、フォローをさせて頂きました。 助かりました!
tsuki01

2020/05/24 07:50

解決して良かったです。 また、高評価やフォローなどありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問