} else { movement.hangTime += Time.deltaTime; if (movement.isMoving) movement.inAirVelocity += Vector3 (Mathf.Sign(h), 0, 0) * Time.deltaTime * movement.inAirControlAcceleration; }}function Spawn(){ movement.verticalSpeed = 0.0; movement.speed = 0.0; if (respawnPoint != null) { transform.position = respawnPoint.position; }}function ApplyGravity(){ var jumpButton = Input.GetButton ("Jump"); if (!canControl) jumpButton = false; if (jump.jumping && !jump.reachedApex && movement.verticalSpeed <= 0.0) { jump.reachedApex = true; SendMessage ("DidJumpReachApex", SendMessageOptions.DontRequireReceiver); } var extraPowerJump = jump.jumping && movement.verticalSpeed > 0.0 && jumpButton && transform.position.y < jump.lastStartHeight + jump.extraHeight && !IsTouchingCeiling (); if (extraPowerJump) return; else if (controller.isGrounded) movement.verticalSpeed = -movement.gravity * Time.deltaTime; else movement.verticalSpeed -= movement.gravity * Time.deltaTime; movement.verticalSpeed = Mathf.Max (movement.verticalSpeed, -movement.maxFallSpeed);}function ApplyJumping(){ if (isSneaking != true && headsUp != true) { if (jump.lastTime + jump.repeatTime * 15 > Time.time) return; if (controller.isGrounded) { if (jump.enabled && Time.time < jump.lastButtonTime + jump.timeout) { movement.verticalSpeed = CalculateJumpVerticalSpeed (jump.height); SendMessage ("DidJump", SendMessageOptions.DontRequireReceiver); } } }}function CalculateJumpVerticalSpeed(targetJumpHeight : float){ return Mathf.Sqrt (2 * targetJumpHeight * movement.gravity);}function DidJump(){ jump.jumping = true; jump.reachedApex = false; jump.lastTime = Time.time; jump.lastStartHeight = transform.position.y; jump.lastButtonTime = -10; canControl = true;}function GetSpeed(){ return movement.speed;}function GetVelocity(){ return movement.velocity;}function IsMoving(){ return movement.isMoving;}function IsJumping(){ return jump.jumping;}function IsTouchingCeiling(){ return (movement.collisionFlags & CollisionFlags.CollidedAbove) != 0;}function GetDirection(){ return movement.direction;}function GetHangTime(){ return movement.hangTime;}function Reset(){ gameObject.tag = "Player";}function SetControllable(controllable : boolean){ canControl = controllable;} E assim temos ambos os scripts que controlam tanto as animacoes quando a jogabilidade basica do personagem como andar, correr, saltar, cair, agachar, se arrastar, etc. O script acima e uma forma de fisica controlada e por isso, em certos momentos, envolve muita matematica que pode ser muito confusa se voce nao conhecer ao menos um pouco sobre fisica. Ler alguns livros sobre o assunto e sempre muito util.A partir deste ponto, se tudo correu bem, seu personagem deve estar andando, correndo e saltando normalmente.E possivel que voce tenha talvez alguma dificuldade para executar o tutorial, se for o caso, provavelmente voce ainda precisa se ambientar melhor com a interface da Unity e conhecer mais a fundo seus conceitos antes de se arriscar em animar um personagem que nesse caso pode ser uma questao complexa. Se voce teve dificuldades em seguir este tutorial por nao ser um passo-a-passo, e normal, este tutorial e focado em explicar conceitos ao inves de indicar exatamente como algo deve ser feito e por isso ha muita coisa nao explicada aqui que voce precisa pesquisar por si proprio.Bem, minha parte termina aqui, mas a sua esta apenas comecando, se voce estiver mesmo disposto a por em pratica os codigos exemplificados aqui, nao tente apenas copiar e colar, isso definitivamente nao ira funcionar. Estude com atencao, procure realmente entender o que esta acontecendo em cada linha e nao muito alem voce se vera desenvolvendo funcoes ainda mais poderosas e se tornando cada vez mais seguro e experiente para tentar conteudo cada vez mais avancado.Por exemplo, tente implementar voce mesmo as funcoes que forcam o personagem a se manter agachado e crie objetos no cenario para testar a funcionalidade e ir aos poucos aprimorando sua funcao. Garanto que voce vai se divertir tanto que certa hora voce se vera mais jogando