В настоящее время я просто пытаюсь сменить свечи спрайтов от неосвещенных до освещенных, когда игрок «взял» свечу и спички, и свеча «выйдет», после определенного количества времени. Однако при нажатии пробела происходит переход от не горит к освещенному, хотя журнал отладки возвращается true, когда это необходимо. Я размещаю здесь, чтобы получить некоторые рекомендации, поскольку большую часть дня я проводил в Интернете и буквально понятия не имею, как действовать дальше. В основном изображения, с которыми я пытаюсь перейти между двумя изображениями, находятся в папке спрайтов по активам.Sprite не меняется при нажатии клавиши - единство 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);
}
}
}
}
Это не решит что-нибудь, я думаю, но я думаю, вы можете использовать GetKeyDown вместо GetKey. GetKeyDown будет происходить только один раз, а GetKey - каждый кадр, который удерживается нажатой. – Maakep
Также. Таймер свечи никогда не запустится. Сначала вы проверяете, является ли подсвечник ложным. Затем вы переходите к методу CandleLit, где вы проверяете, верно ли это. Это никогда не будет правдой, поскольку оно будет работать только в том случае, если оно ложно. – Maakep