現在、私は、プレイヤーがキャンドルとマッチの両方を 'ピックアップ'してキャンドルが '出る'ときにスプライトキャンドルを消灯から点灯に変更しようとしています。一定の時間が経過した後。しかし、スペースバーが押されると、デバッグログが真を返すにもかかわらず、消灯から点灯への遷移は発生しません。私はほとんどの日をオンラインで見ていて、文字通りどのように進めるべきか分からないので、ここにいくつかのガイダンスを投稿しています。 基本的に、私は間に移行しようとしている画像は、資産の下のスプライトフォルダにある2つの異なる画像です。キーが押されてもスプライトが変化しない - ユニティ2D
これはこれまでのところ私が得たものです。
//the two sprites transition
public Sprite unlitCandle;
public Sprite litCandle;
private SpriteRenderer spriteRenderer;
bool pickUpMatches = false;
bool pickUpCandle = false;
float timeRemaining =5;
bool candleLit = false;
// Use this for initialization
void Start() {
spriteRenderer = GetComponent<SpriteRenderer>();
if (spriteRenderer.sprite == null)
spriteRenderer.sprite = unlitCandle;
}
// Update is called once per frame
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.gameObject.CompareTag("Matches"))
{
collision.gameObject.SetActive(false);
pickUpMatches = true;
}
if (collision.gameObject.CompareTag("UnlitCandle"))
{
collision.gameObject.SetActive(true);
pickUpCandle = true;
}
}
public void CandleTimer()
{
if (candleLit == true)
{
timeRemaining = 5;
timeRemaining -= Time.deltaTime;
if (timeRemaining <= 0)
{
candleLit = false;
spriteRenderer.sprite = unlitCandle;
}
}
}
public void ChangeSprite()
{
if (spriteRenderer.sprite == unlitCandle)
{
spriteRenderer.sprite = litCandle;
}
}
void Update() {
if (pickUpCandle == true && pickUpMatches == true)
{
//Debug.Log(candleLit);
if (Input.GetKey(KeyCode.Space) && !candleLit)
{
CandleTimer();
ChangeSprite();
Debug.Log(timeRemaining);
candleLit = true;
//Debug.Log(candleLit);
}
}
}
}
これは何も解決しないと思いますが、GetKeyの代わりにGetKeyDownを使用したいと思うかもしれません。 GetKeyDownは1回だけ発生し、GetKeyはキーが押されているすべてのフレームで発生します。 – Maakep
また、キャンドルタイマーは決して始動しません。まず、ろうそくが偽であるかどうかを確認します。次に、それが真であるかどうかをチェックするCandleLitメソッドに行きます。それが偽である場合にのみ実行されるため、決して真実ではありません。 – Maakep