Unity2D横スクロールのアプリを制作しているのですが、キャラクターの進行方向にコインを散りばめ、
取得するとその数が増えていくというありきたりなものをテストとして作ってみたのですが、
スコアの数がおかしいことになります。
一つのコインが10ポイントとすると、それが20ポイントとなったりすることがあります。
ちなみに、プレイヤーのコライダーの設定は上部がboxColliderで下部がCircleColliderで作成しており、コインを上部にしかヒットしない位置に配置すると、正常に加算されますが、下部のCircleColliderにもヒットする位置に配置すると加算される点数が倍になったりします。
全部、上部に当たる位置に設定すればいいかなとも思いましたが、キャラクターのジャンプアクションなどによって、
キャラクターの脚あたりにヒットする場合もあるので、これは解決するべきだと思いました。
これはどのように解決するべきでしょうか?
何か知っている方がいらっしゃいましたら、ご教示して頂きたいです。
コインはprefabで、
設定しているタグ名は"Coin"です。
今回はプレイヤーの進行方向に3枚のコインを並べて実験しています。
プレイヤーのスクリプトは以下です。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerManager : MonoBehaviour { //プレイヤー制御用Rigidbody2D private Rigidbody2D rbody; //移動速度固定値 private const float MOVE_SPEED = 3.0f; //移動速度 private float moveSpeed; private bool onTrigger = false; //コインのポイント数 private const int COIN_POINT = 10; private int sum = 0; // Use this for initialization void Start() { rbody = GetComponent<Rigidbody2D>(); } // Update is called once per frame void Update() { } void FixedUpdate() { moveSpeed = MOVE_SPEED; rbody.velocity = new Vector2(moveSpeed, rbody.velocity.y); } void OnTriggerEnter2D(Collider2D col) { if (col.gameObject.tag == "Coin") { sum += COIN_POINT; Debug.Log("ポイントは" + sum); } } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/23 03:08
2018/03/26 04:01
2018/03/26 04:06
2018/03/26 04:28
2018/03/26 07:13
2018/03/26 07:28
2018/03/26 08:52
2018/03/29 05:51