私は、プレイヤーが3つの心臓を持っている2Dのゲームのコードに取り組んでいます。最大配列の範囲の制限
プレーヤーがbombPrefabと衝突すると、彼は1つの心臓を失います。プレイヤーがheartPrefabに衝突した場合、彼は余分な心を獲得する。彼がbombPrefabと3回連続して衝突すると、ゲームは終了する。
ハートのテクスチャは次のとおりです。アレイ0(3心)アレイ1(2心)アレイ2(1心)。
アレイを制限する問題が発生しています。私は次のような反応を得る方法を知りたいです:プレイヤーが3つの心臓を持っていて、heartPrefabと衝突すると、そのオブジェクトだけが破壊されます。プレイヤーが持っている心臓の数に変化はありません。
以下のコードは、余分な心を奪うためのものです。しかし、私が1つのheartPrefabと衝突したとき、私はすでに3つの心臓(最大)を持っています。私はエラーを受け取ります。
どうすればよいですか? C#の答えは可能
using UnityEngine;
using System.Collections;
using UnityEngine;
using System.Collections;
public class Heart : MonoBehaviour
{
public Texture2D[] initialHeart;
private int heart;
private int manyHeart;
void Start()
{
// The game start with 3 hearts at RANGE 0
GetComponent<GUITexture>().texture = initialHeart [0];
heart = initialHeart.Length;
}
void Update()
{
}
public bool TakeHearts()
{
if (heart < 0) {
return false;
}
if (manyHeart < (heart - 1)) {
manyHeart += 1;
GetComponent<GUITexture>().texture = initialHeart [manyHeart];
return true;
} else {
return false;
}
}
public bool AddHearts()
{
if (heart <= 2) {
return false;
}
if (manyHeart < (heart + 1)) {
manyHeart -= 1;
GetComponent<GUITexture>().texture = initialHeart [manyHeart];
return true;
} else {
return false;
}
}
}
「initialHeart」を初期化するコードはありますか? – Quantic
@Quantic Unity内でGameObject(Heartsに改名)を作成し、GuiTextureとHeart Scriptを追加しました。インスペクタで配列を設定できます。 –
if(manyHeart <(heart + 1)) 'は(if manyHeart> 0) '私は思う。 @ GunnarB。 –