Alterar o sprite de um objeto no Unity

11

Dentro do código de script do herói (objeto), quero adicionar a possibilidade de alterar seu sprite.

Então o jogador pressiona o botão de espaço e o sprite muda para o outro sprite já adicionado ao projeto.

Você pode me fornecer um código de exemplo para fazer isso?

Fab
fonte
1
Embora a função de alterar sprites abaixo deva funcionar exatamente como você pediu, sugiro que você analise o animador do Unity. Geralmente, quando as pessoas trocam sprites, é para criar uma animação para uma ação (como balançar uma espada ou abrir uma porta) e isso geralmente é feito em mecanismos mais básicos, trocando os sprites manualmente. O Unity, no entanto, tem suporte embutido para animações, permitindo que você crie um arquivo de animação para todos os sprites necessários, permitindo que você diga ao jogo para jogá-los automaticamente, dadas determinadas condições no controlador de animação.
Benjamin Danger Johnson

Respostas:

20

O código foi comentado por você. Apreciar.

public Sprite sprite1; // Drag your first sprite here
public Sprite sprite2; // Drag your second sprite here

private SpriteRenderer spriteRenderer; 

void Start ()
{
    spriteRenderer = GetComponent<SpriteRenderer>(); // we are accessing the SpriteRenderer that is attached to the Gameobject
    if (spriteRenderer.sprite == null) // if the sprite on spriteRenderer is null then
        spriteRenderer.sprite = sprite1; // set the sprite to sprite1
}

void Update ()
{
    if (Input.GetKeyDown (KeyCode.Space)) // If the space bar is pushed down
    {
        ChangeTheDamnSprite (); // call method to change sprite
    }
}

void ChangeTheDamnSprite ()
{
    if (spriteRenderer.sprite == sprite1) // if the spriteRenderer sprite = sprite1 then change to sprite2
    {
        spriteRenderer.sprite = sprite2;
    }
    else
    {
        spriteRenderer.sprite = sprite1; // otherwise change it back to sprite1
    }
}

Você precisa ter um renderizador de sprite conectado ao seu GameObject. Crie um novo script C # e anexe a ele um GameObject. Cole o código entre parênteses ... Tenho certeza que você pode descobrir a partir daí :)

Savlon
fonte
Você, senhor, é uma lenda.
Kalah kokah