Cambiar el sprite de un objeto en Unity

11

Dentro del código del script del héroe (objeto) quiero agregar la posibilidad de cambiar su sprite.

Entonces el jugador presiona el botón de espacio y el sprite cambia al otro sprite ya agregado al proyecto.

¿Me puede proporcionar un código de muestra para hacer esto?

Fabuloso
fuente
1
Aunque la función para cambiar los sprites a continuación debería funcionar exactamente como lo solicitó, le sugiero que busque en el animador de Unity. Por lo general, cuando las personas cambian sprites es crear una animación para una acción (como balancear una espada o abrir una puerta) y esto generalmente se hace en motores más básicos intercambiando los sprites manualmente. Sin embargo, Unity ha incorporado soporte para animaciones que le permite crear un archivo de animación para todos los sprites necesarios, y luego le permite decirle al juego que los juegue automáticamente dadas ciertas condiciones en el controlador de animación.
Benjamin Danger Johnson

Respuestas:

20

El código ha sido comentado por ti. Disfrutar.

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
    }
}

Necesitas tener un renderizador de sprites adjunto a tu GameObject. Cree un nuevo script de C # y adjúntele un GameObject. Pegue el código entre paréntesis ... Estoy seguro de que puede resolverlo desde allí :)

Savlon
fuente
Usted señor, es una leyenda.
kal kokah