- 07/12/2023 03:41
Hola, estoy programando un juego de Pokémon en Unity y, al facilitarme el trabajo haciendo un sistema de simulación personalizado, al programarlo y probarlo, las animaciones del personaje son muy rápidas. No sé si me faltará algún Time.deltaTime o algo así.
[COLOR=#CCCCCC][FONT=Consolas][COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR].[COLOR=#4ec9b0]Generic[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]UnityEngine[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]class[/COLOR] [COLOR=#4ec9b0]CharacterAnimator[/COLOR] : [COLOR=#4ec9b0]MonoBehaviour[/COLOR]
{
[[COLOR=#4ec9b0]SerializeField[/COLOR]] [COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]walkDownSprites[/COLOR];
[[COLOR=#4ec9b0]SerializeField[/COLOR]] [COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]walkUpSprites[/COLOR];
[[COLOR=#4ec9b0]SerializeField[/COLOR]] [COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]walkRightSprites[/COLOR];
[[COLOR=#4ec9b0]SerializeField[/COLOR]] [COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]walkLeftSprites[/COLOR];
[COLOR=#6a9955]//parameters[/COLOR]
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]MoveX[/COLOR] {[COLOR=#569cd6]get[/COLOR]; [COLOR=#569cd6]set[/COLOR]; }
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]MoveY[/COLOR] {[COLOR=#569cd6]get[/COLOR]; [COLOR=#569cd6]set[/COLOR]; }
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]bool[/COLOR] [COLOR=#9cdcfe]IsMoving[/COLOR] {[COLOR=#569cd6]get[/COLOR]; [COLOR=#569cd6]set[/COLOR]; }
[COLOR=#6a9955]//states[/COLOR]
[COLOR=#4ec9b0]SpriteAnimator[/COLOR] [COLOR=#9cdcfe]walkDownAnim[/COLOR];
[COLOR=#4ec9b0]SpriteAnimator[/COLOR] [COLOR=#9cdcfe]walkUpAnim[/COLOR];
[COLOR=#4ec9b0]SpriteAnimator[/COLOR] [COLOR=#9cdcfe]walkRightAnim[/COLOR];
[COLOR=#4ec9b0]SpriteAnimator[/COLOR] [COLOR=#9cdcfe]walkLeftAnim[/COLOR];
[COLOR=#4ec9b0]SpriteAnimator[/COLOR] [COLOR=#9cdcfe]currentAnim[/COLOR];
[COLOR=#569cd6]bool[/COLOR] [COLOR=#9cdcfe]wasPreviouslyMoving[/COLOR];
[COLOR=#4ec9b0]SpriteRenderer[/COLOR] [COLOR=#9cdcfe]spriteRenderer[/COLOR];
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Start[/COLOR]()
{
[COLOR=#9cdcfe]spriteRenderer[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#dcdcaa]GetComponent[/COLOR]<[COLOR=#4ec9b0]SpriteRenderer[/COLOR]>();
[COLOR=#9cdcfe]walkDownAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]new[/COLOR] [COLOR=#4ec9b0]SpriteAnimator[/COLOR]([COLOR=#9cdcfe]walkDownSprites[/COLOR], [COLOR=#9cdcfe]spriteRenderer[/COLOR]);
[COLOR=#9cdcfe]walkUpAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]new[/COLOR] [COLOR=#4ec9b0]SpriteAnimator[/COLOR]([COLOR=#9cdcfe]walkUpSprites[/COLOR], [COLOR=#9cdcfe]spriteRenderer[/COLOR]);
[COLOR=#9cdcfe]walkRightAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]new[/COLOR] [COLOR=#4ec9b0]SpriteAnimator[/COLOR]([COLOR=#9cdcfe]walkRightSprites[/COLOR], [COLOR=#9cdcfe]spriteRenderer[/COLOR]);
[COLOR=#9cdcfe]walkLeftAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]new[/COLOR] [COLOR=#4ec9b0]SpriteAnimator[/COLOR]([COLOR=#9cdcfe]walkLeftSprites[/COLOR], [COLOR=#9cdcfe]spriteRenderer[/COLOR]);
[COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]walkDownAnim[/COLOR];
}
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Update[/COLOR]()
{
[COLOR=#569cd6]var[/COLOR] [COLOR=#9cdcfe]prevAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]currentAnim[/COLOR];
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]MoveX[/COLOR] [COLOR=#d4d4d4]==[/COLOR] [COLOR=#b5cea8]1[/COLOR])
[COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]walkRightAnim[/COLOR];
[COLOR=#c586c0]else[/COLOR] [COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]MoveX[/COLOR] [COLOR=#d4d4d4]==[/COLOR] [COLOR=#d4d4d4]-[/COLOR][COLOR=#b5cea8]1[/COLOR])
[COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]walkLeftAnim[/COLOR];
[COLOR=#c586c0]else[/COLOR] [COLOR=#c586c0]if[/COLOR] ([COLOR=#9cdcfe]MoveY[/COLOR] [COLOR=#d4d4d4]==[/COLOR] [COLOR=#b5cea8]1[/COLOR])
[COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]walkUpAnim[/COLOR];
[COLOR=#c586c0]else[/COLOR] [COLOR=#c586c0]if[/COLOR] ([COLOR=#9cdcfe]MoveY[/COLOR] [COLOR=#d4d4d4]==[/COLOR] [COLOR=#d4d4d4]-[/COLOR][COLOR=#b5cea8]1[/COLOR])
[COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]walkDownAnim[/COLOR];
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#9cdcfe]prevAnim[/COLOR] [COLOR=#d4d4d4]||[/COLOR] [COLOR=#9cdcfe]wasPreviouslyMoving[/COLOR] [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#9cdcfe]IsMoving[/COLOR] )
[COLOR=#9cdcfe]currentAnim[/COLOR].[COLOR=#dcdcaa]Start[/COLOR]();
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]IsMoving[/COLOR])
[COLOR=#9cdcfe]currentAnim[/COLOR].[COLOR=#dcdcaa]HandleUpdate[/COLOR]();
[COLOR=#c586c0]else[/COLOR]
[COLOR=#9cdcfe]spriteRenderer[/COLOR].[COLOR=#9cdcfe]sprite[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]currentAnim[/COLOR].[COLOR=#9cdcfe]Frames[/COLOR][[COLOR=#b5cea8]0[/COLOR]];
[COLOR=#9cdcfe]wasPreviouslyMoving[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]IsMoving[/COLOR];
}
}
//Distinto script
[/FONT][/COLOR]
[COLOR=#CCCCCC][FONT=Consolas][COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR].[COLOR=#4ec9b0]Generic[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]UnityEngine[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]class[/COLOR] [COLOR=#4ec9b0]PlayerScript[/COLOR] : [COLOR=#4ec9b0]MonoBehaviour[/COLOR]
{
[COLOR=#569cd6]public[/COLOR] [COLOR=#4ec9b0]LayerMask[/COLOR] [COLOR=#9cdcfe]solidObjectsLayer[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#4ec9b0]LayerMask[/COLOR] [COLOR=#9cdcfe]interactableLayer[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]moveSpeed[/COLOR];
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]bool[/COLOR] [COLOR=#9cdcfe]isMoving[/COLOR];
[COLOR=#569cd6]private[/COLOR] [COLOR=#4ec9b0]Vector2[/COLOR] [COLOR=#9cdcfe]input[/COLOR];
[COLOR=#569cd6]private[/COLOR] [COLOR=#4ec9b0]CharacterAnimator[/COLOR] [COLOR=#9cdcfe]animator[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#4ec9b0]VectorValue[/COLOR] [COLOR=#9cdcfe]startingPosition[/COLOR];
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Awake[/COLOR]()
{
[COLOR=#9cdcfe]animator[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#dcdcaa]GetComponent[/COLOR]<[COLOR=#4ec9b0]CharacterAnimator[/COLOR]>();
}
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Start[/COLOR]()
{
[COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]startingPosition[/COLOR].[COLOR=#9cdcfe]initialValue[/COLOR];
}
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]HandleUpdate[/COLOR]()
{
[COLOR=#c586c0]if[/COLOR] ([COLOR=#d4d4d4]![/COLOR][COLOR=#9cdcfe]isMoving[/COLOR])
{
[COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]x[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]Input[/COLOR].[COLOR=#dcdcaa]GetAxisRaw[/COLOR]([COLOR=#ce9178]"Horizontal"[/COLOR]);
[COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]y[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]Input[/COLOR].[COLOR=#dcdcaa]GetAxisRaw[/COLOR]([COLOR=#ce9178]"Vertical"[/COLOR]);
[COLOR=#c586c0]if[/COLOR] ([COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]x[/COLOR] [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#b5cea8]0[/COLOR]) [COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]y[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#b5cea8]0[/COLOR];
[COLOR=#c586c0]if[/COLOR] ([COLOR=#9cdcfe]input[/COLOR] [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#9cdcfe]Vector2[/COLOR].[COLOR=#9cdcfe]zero[/COLOR])
{
[COLOR=#9cdcfe]animator[/COLOR].[COLOR=#9cdcfe]MoveX[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]x[/COLOR];
[COLOR=#9cdcfe]animator[/COLOR].[COLOR=#9cdcfe]MoveY[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]y[/COLOR];
[COLOR=#569cd6]var[/COLOR] [COLOR=#9cdcfe]targetPos[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR];
[COLOR=#9cdcfe]targetPos[/COLOR].[COLOR=#9cdcfe]x[/COLOR] [COLOR=#d4d4d4]+=[/COLOR] [COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]x[/COLOR];
[COLOR=#9cdcfe]targetPos[/COLOR].[COLOR=#9cdcfe]y[/COLOR] [COLOR=#d4d4d4]+=[/COLOR] [COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]y[/COLOR];
[COLOR=#c586c0]if[/COLOR]([COLOR=#dcdcaa]isWalkable[/COLOR]([COLOR=#9cdcfe]targetPos[/COLOR]))
[COLOR=#dcdcaa]StartCoroutine[/COLOR]([COLOR=#dcdcaa]Move[/COLOR]([COLOR=#9cdcfe]targetPos[/COLOR]));
}
}
[COLOR=#9cdcfe]animator[/COLOR].[COLOR=#9cdcfe]IsMoving[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]isMoving[/COLOR];
[COLOR=#c586c0]if[/COLOR] ([COLOR=#9cdcfe]Input[/COLOR].[COLOR=#dcdcaa]GetKeyDown[/COLOR]([COLOR=#9cdcfe]KeyCode[/COLOR].[COLOR=#9cdcfe]E[/COLOR]))
[COLOR=#dcdcaa]Interact[/COLOR]();
}
[COLOR=#4ec9b0]IEnumerator[/COLOR] [COLOR=#dcdcaa]Move[/COLOR]([COLOR=#4ec9b0]Vector3[/COLOR] [COLOR=#9cdcfe]targetPos[/COLOR])
{
[COLOR=#9cdcfe]isMoving[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]true[/COLOR];
[COLOR=#c586c0]while[/COLOR] (([COLOR=#9cdcfe]targetPos[/COLOR] [COLOR=#d4d4d4]-[/COLOR] [COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR]).[COLOR=#9cdcfe]sqrMagnitude[/COLOR] [COLOR=#d4d4d4]>[/COLOR] [COLOR=#9cdcfe]Mathf[/COLOR].[COLOR=#9cdcfe]Epsilon[/COLOR])
{
[COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]Vector3[/COLOR].[COLOR=#dcdcaa]MoveTowards[/COLOR]([COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR], [COLOR=#9cdcfe]targetPos[/COLOR], [COLOR=#9cdcfe]moveSpeed[/COLOR] [COLOR=#d4d4d4]*[/COLOR] [COLOR=#9cdcfe]Time[/COLOR].[COLOR=#9cdcfe]deltaTime[/COLOR]);
[COLOR=#c586c0]yield[/COLOR] [COLOR=#c586c0]return[/COLOR] [COLOR=#569cd6]null[/COLOR];
}
[COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]targetPos[/COLOR];
[COLOR=#9cdcfe]isMoving[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]false[/COLOR];
}
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Interact[/COLOR]()
{
[COLOR=#569cd6]var[/COLOR] [COLOR=#9cdcfe]facingDir[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]new[/COLOR] [COLOR=#4ec9b0]Vector3[/COLOR]([COLOR=#9cdcfe]animator[/COLOR].[COLOR=#9cdcfe]MoveX[/COLOR], [COLOR=#9cdcfe]animator[/COLOR].[COLOR=#9cdcfe]MoveY[/COLOR]);
[COLOR=#569cd6]var[/COLOR] [COLOR=#9cdcfe]interactPos[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR] [COLOR=#d4d4d4]+[/COLOR] [COLOR=#9cdcfe]facingDir[/COLOR];
[COLOR=#9cdcfe]Debug[/COLOR].[COLOR=#dcdcaa]DrawLine[/COLOR]([COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR], [COLOR=#9cdcfe]interactPos[/COLOR], [COLOR=#9cdcfe]Color[/COLOR].[COLOR=#9cdcfe]green[/COLOR], [COLOR=#b5cea8]1f[/COLOR]);
[COLOR=#569cd6]var[/COLOR] [COLOR=#9cdcfe]collider[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]Physics2D[/COLOR].[COLOR=#dcdcaa]OverlapCircle[/COLOR]([COLOR=#9cdcfe]interactPos[/COLOR], [COLOR=#b5cea8]0.3f[/COLOR], [COLOR=#9cdcfe]interactableLayer[/COLOR]);
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]collider[/COLOR] [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#569cd6]null[/COLOR])
{
[COLOR=#9cdcfe]collider[/COLOR].[COLOR=#dcdcaa]GetComponent[/COLOR]<[COLOR=#4ec9b0]Interactable[/COLOR]>()[COLOR=#d4d4d4]?[/COLOR].[COLOR=#dcdcaa]Interact[/COLOR]();
}
}
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]bool[/COLOR] [COLOR=#dcdcaa]isWalkable[/COLOR]([COLOR=#4ec9b0]Vector3[/COLOR] [COLOR=#9cdcfe]targetPos[/COLOR])
{
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]Physics2D[/COLOR].[COLOR=#dcdcaa]OverlapCircle[/COLOR]([COLOR=#9cdcfe]targetPos[/COLOR], [COLOR=#b5cea8]0.01f[/COLOR], [COLOR=#9cdcfe]solidObjectsLayer[/COLOR] [COLOR=#d4d4d4]|[/COLOR] [COLOR=#9cdcfe]interactableLayer[/COLOR]) [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#569cd6]null[/COLOR])
{
[COLOR=#c586c0]return[/COLOR] [COLOR=#569cd6]false[/COLOR];
}
[COLOR=#c586c0]return[/COLOR] [COLOR=#569cd6]true[/COLOR];
}
}
//distinto script
[/FONT][/COLOR]
[COLOR=#CCCCCC][FONT=Consolas][COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR].[COLOR=#4ec9b0]Generic[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]UnityEngine[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]class[/COLOR] [COLOR=#4ec9b0]SpriteAnimator[/COLOR] : [COLOR=#4ec9b0]MonoBehaviour[/COLOR]
{
[COLOR=#4ec9b0]SpriteRenderer[/COLOR] [COLOR=#9cdcfe]spriteRenderer[/COLOR];
[COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]frames[/COLOR];
[COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]frameRate[/COLOR];
[COLOR=#569cd6]int[/COLOR] [COLOR=#9cdcfe]currentFrame[/COLOR];
[COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]timer[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#dcdcaa]SpriteAnimator[/COLOR]([COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]frames[/COLOR], [COLOR=#4ec9b0]SpriteRenderer[/COLOR] [COLOR=#9cdcfe]spriteRenderer[/COLOR], [COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]frameRate[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#b5cea8]0.16f[/COLOR])
{
[COLOR=#569cd6]this[/COLOR].[COLOR=#9cdcfe]frames[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]frames[/COLOR];
[COLOR=#569cd6]this[/COLOR].[COLOR=#9cdcfe]spriteRenderer[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]spriteRenderer[/COLOR];
[COLOR=#569cd6]this[/COLOR].[COLOR=#9cdcfe]frameRate[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]frameRate[/COLOR];
}
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Start[/COLOR]()
{
[COLOR=#9cdcfe]currentFrame[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#b5cea8]0[/COLOR];
[COLOR=#9cdcfe]timer[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#b5cea8]0f[/COLOR];
[COLOR=#9cdcfe]spriteRenderer[/COLOR].[COLOR=#9cdcfe]sprite[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]frames[/COLOR][[COLOR=#b5cea8]0[/COLOR]];
}
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]HandleUpdate[/COLOR]()
{
[COLOR=#9cdcfe]timer[/COLOR] [COLOR=#d4d4d4]+=[/COLOR] [COLOR=#9cdcfe]Time[/COLOR].[COLOR=#9cdcfe]deltaTime[/COLOR];
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]timer[/COLOR] [COLOR=#d4d4d4]<[/COLOR] [COLOR=#9cdcfe]frameRate[/COLOR])
{
[COLOR=#9cdcfe]currentFrame[/COLOR] [COLOR=#d4d4d4]=[/COLOR] ([COLOR=#9cdcfe]currentFrame[/COLOR] [COLOR=#d4d4d4]+[/COLOR] [COLOR=#b5cea8]1[/COLOR]) [COLOR=#d4d4d4]%[/COLOR] [COLOR=#9cdcfe]frames[/COLOR].[COLOR=#9cdcfe]Count[/COLOR];
[COLOR=#9cdcfe]spriteRenderer[/COLOR].[COLOR=#9cdcfe]sprite[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]frames[/COLOR][[COLOR=#9cdcfe]currentFrame[/COLOR]];
[COLOR=#9cdcfe]timer[/COLOR] [COLOR=#d4d4d4]-=[/COLOR] [COLOR=#9cdcfe]frameRate[/COLOR];
}
}
[COLOR=#569cd6]public[/COLOR] [COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]Frames[/COLOR]
{
[COLOR=#569cd6]get[/COLOR]{ [COLOR=#c586c0]return[/COLOR] [COLOR=#9cdcfe]frames[/COLOR]; }
}
}
[/FONT][/COLOR]
[COLOR=#CCCCCC][FONT=Consolas][COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR].[COLOR=#4ec9b0]Generic[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]UnityEngine[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]class[/COLOR] [COLOR=#4ec9b0]CharacterAnimator[/COLOR] : [COLOR=#4ec9b0]MonoBehaviour[/COLOR]
{
[[COLOR=#4ec9b0]SerializeField[/COLOR]] [COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]walkDownSprites[/COLOR];
[[COLOR=#4ec9b0]SerializeField[/COLOR]] [COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]walkUpSprites[/COLOR];
[[COLOR=#4ec9b0]SerializeField[/COLOR]] [COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]walkRightSprites[/COLOR];
[[COLOR=#4ec9b0]SerializeField[/COLOR]] [COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]walkLeftSprites[/COLOR];
[COLOR=#6a9955]//parameters[/COLOR]
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]MoveX[/COLOR] {[COLOR=#569cd6]get[/COLOR]; [COLOR=#569cd6]set[/COLOR]; }
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]MoveY[/COLOR] {[COLOR=#569cd6]get[/COLOR]; [COLOR=#569cd6]set[/COLOR]; }
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]bool[/COLOR] [COLOR=#9cdcfe]IsMoving[/COLOR] {[COLOR=#569cd6]get[/COLOR]; [COLOR=#569cd6]set[/COLOR]; }
[COLOR=#6a9955]//states[/COLOR]
[COLOR=#4ec9b0]SpriteAnimator[/COLOR] [COLOR=#9cdcfe]walkDownAnim[/COLOR];
[COLOR=#4ec9b0]SpriteAnimator[/COLOR] [COLOR=#9cdcfe]walkUpAnim[/COLOR];
[COLOR=#4ec9b0]SpriteAnimator[/COLOR] [COLOR=#9cdcfe]walkRightAnim[/COLOR];
[COLOR=#4ec9b0]SpriteAnimator[/COLOR] [COLOR=#9cdcfe]walkLeftAnim[/COLOR];
[COLOR=#4ec9b0]SpriteAnimator[/COLOR] [COLOR=#9cdcfe]currentAnim[/COLOR];
[COLOR=#569cd6]bool[/COLOR] [COLOR=#9cdcfe]wasPreviouslyMoving[/COLOR];
[COLOR=#4ec9b0]SpriteRenderer[/COLOR] [COLOR=#9cdcfe]spriteRenderer[/COLOR];
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Start[/COLOR]()
{
[COLOR=#9cdcfe]spriteRenderer[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#dcdcaa]GetComponent[/COLOR]<[COLOR=#4ec9b0]SpriteRenderer[/COLOR]>();
[COLOR=#9cdcfe]walkDownAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]new[/COLOR] [COLOR=#4ec9b0]SpriteAnimator[/COLOR]([COLOR=#9cdcfe]walkDownSprites[/COLOR], [COLOR=#9cdcfe]spriteRenderer[/COLOR]);
[COLOR=#9cdcfe]walkUpAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]new[/COLOR] [COLOR=#4ec9b0]SpriteAnimator[/COLOR]([COLOR=#9cdcfe]walkUpSprites[/COLOR], [COLOR=#9cdcfe]spriteRenderer[/COLOR]);
[COLOR=#9cdcfe]walkRightAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]new[/COLOR] [COLOR=#4ec9b0]SpriteAnimator[/COLOR]([COLOR=#9cdcfe]walkRightSprites[/COLOR], [COLOR=#9cdcfe]spriteRenderer[/COLOR]);
[COLOR=#9cdcfe]walkLeftAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]new[/COLOR] [COLOR=#4ec9b0]SpriteAnimator[/COLOR]([COLOR=#9cdcfe]walkLeftSprites[/COLOR], [COLOR=#9cdcfe]spriteRenderer[/COLOR]);
[COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]walkDownAnim[/COLOR];
}
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Update[/COLOR]()
{
[COLOR=#569cd6]var[/COLOR] [COLOR=#9cdcfe]prevAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]currentAnim[/COLOR];
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]MoveX[/COLOR] [COLOR=#d4d4d4]==[/COLOR] [COLOR=#b5cea8]1[/COLOR])
[COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]walkRightAnim[/COLOR];
[COLOR=#c586c0]else[/COLOR] [COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]MoveX[/COLOR] [COLOR=#d4d4d4]==[/COLOR] [COLOR=#d4d4d4]-[/COLOR][COLOR=#b5cea8]1[/COLOR])
[COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]walkLeftAnim[/COLOR];
[COLOR=#c586c0]else[/COLOR] [COLOR=#c586c0]if[/COLOR] ([COLOR=#9cdcfe]MoveY[/COLOR] [COLOR=#d4d4d4]==[/COLOR] [COLOR=#b5cea8]1[/COLOR])
[COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]walkUpAnim[/COLOR];
[COLOR=#c586c0]else[/COLOR] [COLOR=#c586c0]if[/COLOR] ([COLOR=#9cdcfe]MoveY[/COLOR] [COLOR=#d4d4d4]==[/COLOR] [COLOR=#d4d4d4]-[/COLOR][COLOR=#b5cea8]1[/COLOR])
[COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]walkDownAnim[/COLOR];
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]currentAnim[/COLOR] [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#9cdcfe]prevAnim[/COLOR] [COLOR=#d4d4d4]||[/COLOR] [COLOR=#9cdcfe]wasPreviouslyMoving[/COLOR] [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#9cdcfe]IsMoving[/COLOR] )
[COLOR=#9cdcfe]currentAnim[/COLOR].[COLOR=#dcdcaa]Start[/COLOR]();
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]IsMoving[/COLOR])
[COLOR=#9cdcfe]currentAnim[/COLOR].[COLOR=#dcdcaa]HandleUpdate[/COLOR]();
[COLOR=#c586c0]else[/COLOR]
[COLOR=#9cdcfe]spriteRenderer[/COLOR].[COLOR=#9cdcfe]sprite[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]currentAnim[/COLOR].[COLOR=#9cdcfe]Frames[/COLOR][[COLOR=#b5cea8]0[/COLOR]];
[COLOR=#9cdcfe]wasPreviouslyMoving[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]IsMoving[/COLOR];
}
}
//Distinto script
[/FONT][/COLOR]
[COLOR=#CCCCCC][FONT=Consolas][COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR].[COLOR=#4ec9b0]Generic[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]UnityEngine[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]class[/COLOR] [COLOR=#4ec9b0]PlayerScript[/COLOR] : [COLOR=#4ec9b0]MonoBehaviour[/COLOR]
{
[COLOR=#569cd6]public[/COLOR] [COLOR=#4ec9b0]LayerMask[/COLOR] [COLOR=#9cdcfe]solidObjectsLayer[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#4ec9b0]LayerMask[/COLOR] [COLOR=#9cdcfe]interactableLayer[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]moveSpeed[/COLOR];
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]bool[/COLOR] [COLOR=#9cdcfe]isMoving[/COLOR];
[COLOR=#569cd6]private[/COLOR] [COLOR=#4ec9b0]Vector2[/COLOR] [COLOR=#9cdcfe]input[/COLOR];
[COLOR=#569cd6]private[/COLOR] [COLOR=#4ec9b0]CharacterAnimator[/COLOR] [COLOR=#9cdcfe]animator[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#4ec9b0]VectorValue[/COLOR] [COLOR=#9cdcfe]startingPosition[/COLOR];
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Awake[/COLOR]()
{
[COLOR=#9cdcfe]animator[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#dcdcaa]GetComponent[/COLOR]<[COLOR=#4ec9b0]CharacterAnimator[/COLOR]>();
}
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Start[/COLOR]()
{
[COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]startingPosition[/COLOR].[COLOR=#9cdcfe]initialValue[/COLOR];
}
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]HandleUpdate[/COLOR]()
{
[COLOR=#c586c0]if[/COLOR] ([COLOR=#d4d4d4]![/COLOR][COLOR=#9cdcfe]isMoving[/COLOR])
{
[COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]x[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]Input[/COLOR].[COLOR=#dcdcaa]GetAxisRaw[/COLOR]([COLOR=#ce9178]"Horizontal"[/COLOR]);
[COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]y[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]Input[/COLOR].[COLOR=#dcdcaa]GetAxisRaw[/COLOR]([COLOR=#ce9178]"Vertical"[/COLOR]);
[COLOR=#c586c0]if[/COLOR] ([COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]x[/COLOR] [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#b5cea8]0[/COLOR]) [COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]y[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#b5cea8]0[/COLOR];
[COLOR=#c586c0]if[/COLOR] ([COLOR=#9cdcfe]input[/COLOR] [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#9cdcfe]Vector2[/COLOR].[COLOR=#9cdcfe]zero[/COLOR])
{
[COLOR=#9cdcfe]animator[/COLOR].[COLOR=#9cdcfe]MoveX[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]x[/COLOR];
[COLOR=#9cdcfe]animator[/COLOR].[COLOR=#9cdcfe]MoveY[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]y[/COLOR];
[COLOR=#569cd6]var[/COLOR] [COLOR=#9cdcfe]targetPos[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR];
[COLOR=#9cdcfe]targetPos[/COLOR].[COLOR=#9cdcfe]x[/COLOR] [COLOR=#d4d4d4]+=[/COLOR] [COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]x[/COLOR];
[COLOR=#9cdcfe]targetPos[/COLOR].[COLOR=#9cdcfe]y[/COLOR] [COLOR=#d4d4d4]+=[/COLOR] [COLOR=#9cdcfe]input[/COLOR].[COLOR=#9cdcfe]y[/COLOR];
[COLOR=#c586c0]if[/COLOR]([COLOR=#dcdcaa]isWalkable[/COLOR]([COLOR=#9cdcfe]targetPos[/COLOR]))
[COLOR=#dcdcaa]StartCoroutine[/COLOR]([COLOR=#dcdcaa]Move[/COLOR]([COLOR=#9cdcfe]targetPos[/COLOR]));
}
}
[COLOR=#9cdcfe]animator[/COLOR].[COLOR=#9cdcfe]IsMoving[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]isMoving[/COLOR];
[COLOR=#c586c0]if[/COLOR] ([COLOR=#9cdcfe]Input[/COLOR].[COLOR=#dcdcaa]GetKeyDown[/COLOR]([COLOR=#9cdcfe]KeyCode[/COLOR].[COLOR=#9cdcfe]E[/COLOR]))
[COLOR=#dcdcaa]Interact[/COLOR]();
}
[COLOR=#4ec9b0]IEnumerator[/COLOR] [COLOR=#dcdcaa]Move[/COLOR]([COLOR=#4ec9b0]Vector3[/COLOR] [COLOR=#9cdcfe]targetPos[/COLOR])
{
[COLOR=#9cdcfe]isMoving[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]true[/COLOR];
[COLOR=#c586c0]while[/COLOR] (([COLOR=#9cdcfe]targetPos[/COLOR] [COLOR=#d4d4d4]-[/COLOR] [COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR]).[COLOR=#9cdcfe]sqrMagnitude[/COLOR] [COLOR=#d4d4d4]>[/COLOR] [COLOR=#9cdcfe]Mathf[/COLOR].[COLOR=#9cdcfe]Epsilon[/COLOR])
{
[COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]Vector3[/COLOR].[COLOR=#dcdcaa]MoveTowards[/COLOR]([COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR], [COLOR=#9cdcfe]targetPos[/COLOR], [COLOR=#9cdcfe]moveSpeed[/COLOR] [COLOR=#d4d4d4]*[/COLOR] [COLOR=#9cdcfe]Time[/COLOR].[COLOR=#9cdcfe]deltaTime[/COLOR]);
[COLOR=#c586c0]yield[/COLOR] [COLOR=#c586c0]return[/COLOR] [COLOR=#569cd6]null[/COLOR];
}
[COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]targetPos[/COLOR];
[COLOR=#9cdcfe]isMoving[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]false[/COLOR];
}
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Interact[/COLOR]()
{
[COLOR=#569cd6]var[/COLOR] [COLOR=#9cdcfe]facingDir[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#569cd6]new[/COLOR] [COLOR=#4ec9b0]Vector3[/COLOR]([COLOR=#9cdcfe]animator[/COLOR].[COLOR=#9cdcfe]MoveX[/COLOR], [COLOR=#9cdcfe]animator[/COLOR].[COLOR=#9cdcfe]MoveY[/COLOR]);
[COLOR=#569cd6]var[/COLOR] [COLOR=#9cdcfe]interactPos[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR] [COLOR=#d4d4d4]+[/COLOR] [COLOR=#9cdcfe]facingDir[/COLOR];
[COLOR=#9cdcfe]Debug[/COLOR].[COLOR=#dcdcaa]DrawLine[/COLOR]([COLOR=#9cdcfe]transform[/COLOR].[COLOR=#9cdcfe]position[/COLOR], [COLOR=#9cdcfe]interactPos[/COLOR], [COLOR=#9cdcfe]Color[/COLOR].[COLOR=#9cdcfe]green[/COLOR], [COLOR=#b5cea8]1f[/COLOR]);
[COLOR=#569cd6]var[/COLOR] [COLOR=#9cdcfe]collider[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]Physics2D[/COLOR].[COLOR=#dcdcaa]OverlapCircle[/COLOR]([COLOR=#9cdcfe]interactPos[/COLOR], [COLOR=#b5cea8]0.3f[/COLOR], [COLOR=#9cdcfe]interactableLayer[/COLOR]);
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]collider[/COLOR] [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#569cd6]null[/COLOR])
{
[COLOR=#9cdcfe]collider[/COLOR].[COLOR=#dcdcaa]GetComponent[/COLOR]<[COLOR=#4ec9b0]Interactable[/COLOR]>()[COLOR=#d4d4d4]?[/COLOR].[COLOR=#dcdcaa]Interact[/COLOR]();
}
}
[COLOR=#569cd6]private[/COLOR] [COLOR=#569cd6]bool[/COLOR] [COLOR=#dcdcaa]isWalkable[/COLOR]([COLOR=#4ec9b0]Vector3[/COLOR] [COLOR=#9cdcfe]targetPos[/COLOR])
{
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]Physics2D[/COLOR].[COLOR=#dcdcaa]OverlapCircle[/COLOR]([COLOR=#9cdcfe]targetPos[/COLOR], [COLOR=#b5cea8]0.01f[/COLOR], [COLOR=#9cdcfe]solidObjectsLayer[/COLOR] [COLOR=#d4d4d4]|[/COLOR] [COLOR=#9cdcfe]interactableLayer[/COLOR]) [COLOR=#d4d4d4]!=[/COLOR] [COLOR=#569cd6]null[/COLOR])
{
[COLOR=#c586c0]return[/COLOR] [COLOR=#569cd6]false[/COLOR];
}
[COLOR=#c586c0]return[/COLOR] [COLOR=#569cd6]true[/COLOR];
}
}
//distinto script
[/FONT][/COLOR]
[COLOR=#CCCCCC][FONT=Consolas][COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]System[/COLOR].[COLOR=#4ec9b0]Collections[/COLOR].[COLOR=#4ec9b0]Generic[/COLOR];
[COLOR=#c586c0]using[/COLOR] [COLOR=#4ec9b0]UnityEngine[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]class[/COLOR] [COLOR=#4ec9b0]SpriteAnimator[/COLOR] : [COLOR=#4ec9b0]MonoBehaviour[/COLOR]
{
[COLOR=#4ec9b0]SpriteRenderer[/COLOR] [COLOR=#9cdcfe]spriteRenderer[/COLOR];
[COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]frames[/COLOR];
[COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]frameRate[/COLOR];
[COLOR=#569cd6]int[/COLOR] [COLOR=#9cdcfe]currentFrame[/COLOR];
[COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]timer[/COLOR];
[COLOR=#569cd6]public[/COLOR] [COLOR=#dcdcaa]SpriteAnimator[/COLOR]([COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]frames[/COLOR], [COLOR=#4ec9b0]SpriteRenderer[/COLOR] [COLOR=#9cdcfe]spriteRenderer[/COLOR], [COLOR=#569cd6]float[/COLOR] [COLOR=#9cdcfe]frameRate[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#b5cea8]0.16f[/COLOR])
{
[COLOR=#569cd6]this[/COLOR].[COLOR=#9cdcfe]frames[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]frames[/COLOR];
[COLOR=#569cd6]this[/COLOR].[COLOR=#9cdcfe]spriteRenderer[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]spriteRenderer[/COLOR];
[COLOR=#569cd6]this[/COLOR].[COLOR=#9cdcfe]frameRate[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]frameRate[/COLOR];
}
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]Start[/COLOR]()
{
[COLOR=#9cdcfe]currentFrame[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#b5cea8]0[/COLOR];
[COLOR=#9cdcfe]timer[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#b5cea8]0f[/COLOR];
[COLOR=#9cdcfe]spriteRenderer[/COLOR].[COLOR=#9cdcfe]sprite[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]frames[/COLOR][[COLOR=#b5cea8]0[/COLOR]];
}
[COLOR=#569cd6]public[/COLOR] [COLOR=#569cd6]void[/COLOR] [COLOR=#dcdcaa]HandleUpdate[/COLOR]()
{
[COLOR=#9cdcfe]timer[/COLOR] [COLOR=#d4d4d4]+=[/COLOR] [COLOR=#9cdcfe]Time[/COLOR].[COLOR=#9cdcfe]deltaTime[/COLOR];
[COLOR=#c586c0]if[/COLOR]([COLOR=#9cdcfe]timer[/COLOR] [COLOR=#d4d4d4]<[/COLOR] [COLOR=#9cdcfe]frameRate[/COLOR])
{
[COLOR=#9cdcfe]currentFrame[/COLOR] [COLOR=#d4d4d4]=[/COLOR] ([COLOR=#9cdcfe]currentFrame[/COLOR] [COLOR=#d4d4d4]+[/COLOR] [COLOR=#b5cea8]1[/COLOR]) [COLOR=#d4d4d4]%[/COLOR] [COLOR=#9cdcfe]frames[/COLOR].[COLOR=#9cdcfe]Count[/COLOR];
[COLOR=#9cdcfe]spriteRenderer[/COLOR].[COLOR=#9cdcfe]sprite[/COLOR] [COLOR=#d4d4d4]=[/COLOR] [COLOR=#9cdcfe]frames[/COLOR][[COLOR=#9cdcfe]currentFrame[/COLOR]];
[COLOR=#9cdcfe]timer[/COLOR] [COLOR=#d4d4d4]-=[/COLOR] [COLOR=#9cdcfe]frameRate[/COLOR];
}
}
[COLOR=#569cd6]public[/COLOR] [COLOR=#4ec9b0]List[/COLOR]<[COLOR=#4ec9b0]Sprite[/COLOR]> [COLOR=#9cdcfe]Frames[/COLOR]
{
[COLOR=#569cd6]get[/COLOR]{ [COLOR=#c586c0]return[/COLOR] [COLOR=#9cdcfe]frames[/COLOR]; }
}
}
[/FONT][/COLOR]