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)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/24 06:46
2020/05/24 07:50