Animações/Script de Ataque
2 participantes
Página 1 de 1
Animações/Script de Ataque
Eae galera,
Meu projeto anda bem parado ( https://www.schultzgames.com/t4402-projeto-b ) porque estou com demasiada dificuldade pra acertar os primeiros scripts do jogim.
Vou postar os códigos para talvez alguém me dar um norte e ver a onde ele está pecando.
Os erros são o seguintes:
-Caso eu aperte o botão de correr e pular/dodge a animação de pulo não acontece, porém ele até pula.
-As animações de ataque estão muito lentas e não estão responsivas.
-O player quando pula da uma bugada nas quinas.
Obs: O jogo sera um Beat'Em Up. Talvez hoje eu up o jogo pra vcs darem uma olhada nesses erros, deixa eu descobrir primeiro como fazer um Exe. kkkkkk
Scripts
AnimationController
PlayerBehaviour
Meu projeto anda bem parado ( https://www.schultzgames.com/t4402-projeto-b ) porque estou com demasiada dificuldade pra acertar os primeiros scripts do jogim.
Vou postar os códigos para talvez alguém me dar um norte e ver a onde ele está pecando.
Os erros são o seguintes:
-Caso eu aperte o botão de correr e pular/dodge a animação de pulo não acontece, porém ele até pula.
-As animações de ataque estão muito lentas e não estão responsivas.
-O player quando pula da uma bugada nas quinas.
Obs: O jogo sera um Beat'Em Up. Talvez hoje eu up o jogo pra vcs darem uma olhada nesses erros, deixa eu descobrir primeiro como fazer um Exe. kkkkkk
Scripts
AnimationController
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum AnimationStates{
JUMP,
WALK,
IDLE,
RUN,
DODGE,
ATTACK_FACAO1,
ATTACK_FACAO2,
ATTACK_FACAO3,
}
public class v : MonoBehaviour {
public Animator animator;
public void PlayAnimation (AnimationStates statesAnimation) {
switch (statesAnimation) {
case AnimationStates.IDLE:
{
StopAnimations ();
animator.SetBool ("InIdle", true);
}
break;
case AnimationStates.JUMP:
{
StopAnimations ();
animator.SetBool ("InJump", true);
}
break;
case AnimationStates.WALK:
{
StopAnimations ();
animator.SetBool ("InWalk", true);
}
break;
case AnimationStates.RUN:
{
StopAnimations ();
animator.SetBool ("InRun", true);
}
break;
case AnimationStates.DODGE:
{
StopAnimations ();
animator.SetBool ("InDodge", true);
}
break;
case AnimationStates.ATTACK_FACAO1:
{
StopAnimations ();
animator.SetBool ("InAttack", true);
}
break;
case AnimationStates.ATTACK_FACAO2:
{
StopAnimations ();
animator.SetBool ("InAttack", true);
}
break;
case AnimationStates.ATTACK_FACAO3:
{
StopAnimations ();
animator.SetBool ("InAttack", true);
}
break;
}
}
public void CallAttackAnimation(int indiceAnimation){
if (indiceAnimation == 0)
PlayAnimation (AnimationStates.ATTACK_FACAO1);
else if (indiceAnimation == 1)
PlayAnimation (AnimationStates.ATTACK_FACAO1);
else if (indiceAnimation == 1)
PlayAnimation (AnimationStates.ATTACK_FACAO1);
animator.SetInteger ("CurrentAttack", indiceAnimation);
}
void StopAnimations(){
animator.SetBool ("InWalk", false);
animator.SetBool ("InJump", false);
animator.SetBool ("InIdle", false);
animator.SetBool ("InRun", false);
animator.SetBool ("InDodge", false);
animator.SetBool ("InAttack", false);
}
}
PlayerBehaviour
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerBehaviour : MonoBehaviour {
private AnimationController animationController;
public enum PlayerStates{
Movement,
Attack,
}
//StateMachine
private PlayerStates currentState = PlayerStates.Movement;
//Movimentation
private float speed;
private float speedWalk = 3.8F;
private float rotateSpeed = 3.7F;
private Vector3 moveDirection = Vector3.zero;
private CharacterController controller;
public float jumpSpeed = 12.0F;
public float gravity = 20.0F;
public float speedRun = 9.0F;
public float speedDodge = 14.0F;
//Attack
private int currentAttack = 0;
private float curretAttackRate;
public float attackRate;
public int totalAttackAnimations;
// Use this for initialization
protected void Start () {
animationController = GetComponent<AnimationController> ();
controller = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update () {
switch (currentState) {
case PlayerStates.Movement:
{
if (Input.GetKey (KeyCode.LeftShift)) {
speed = speedRun;
animationController.PlayAnimation (AnimationStates.RUN);
} else if (Input.GetKey (KeyCode.Space)) {
speed = jumpSpeed;
animationController.PlayAnimation (AnimationStates.JUMP);
} else if (Input.GetKey (KeyCode.LeftControl)) {
speed = speedDodge;
animationController.PlayAnimation (AnimationStates.DODGE);
} else {
speed = speedWalk;
if (Input.GetAxis ("Horizontal") != 0 || Input.GetAxis ("Vertical") != 0)
animationController.PlayAnimation (AnimationStates.WALK);
else
animationController.PlayAnimation (AnimationStates.IDLE);
}
transform.Rotate (0, Input.GetAxis ("Horizontal") * rotateSpeed, 0);
Vector3 forward = transform.TransformDirection (Vector3.forward);
float curSpeed = speed * Input.GetAxis ("Vertical");
controller.SimpleMove (forward * curSpeed);
if (controller.isGrounded) {
if (Input.GetButton ("Jump"))
moveDirection.y = jumpSpeed;
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move (moveDirection * Time.deltaTime);
//Attack Change State
if (Input.GetKey (KeyCode.Keypad1)) {
currentState = PlayerStates.Attack;
}
}
break;
case PlayerStates.Attack:{
curretAttackRate += Time.deltaTime;
if (curretAttackRate > attackRate) {
curretAttackRate = 0;
animationController.CallAttackAnimation (currentAttack);
currentAttack++;
if (currentAttack > totalAttackAnimations) {
currentAttack = 0;
}
}
if (!Input.GetKey (KeyCode.Keypad1)) {
currentState = PlayerStates.Movement;
curretAttackRate = 0;
}
}
break;
}
}
}
julioou- Avançado
- PONTOS : 2909
REPUTAÇÃO : 57
Idade : 29
Áreas de atuação : Palpiteiro
Respeito as regras :
Re: Animações/Script de Ataque
Precisamos de mais informações, tipo os estados do Animator... os problemas costumam ser sempre lá.
Re: Animações/Script de Ataque
Obrigado, vou dar um pente fino no animator, alterar algumas transições e etc... Assim que achar alguma solução posto aqui.
julioou- Avançado
- PONTOS : 2909
REPUTAÇÃO : 57
Idade : 29
Áreas de atuação : Palpiteiro
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Botões de Ataque e Pular carrega duas animações ao mesmo tempo
» Script de ataque para vários Objetos
» Dúvida No Script (animações ataques)
» ajuda com script de inimigo para fazer com que ele só ataque quando ver o player
» [RESOLVIDO] OnTriggerEnter e OnTriggerExit parecem não funcionar script ataque inimigo
» Script de ataque para vários Objetos
» Dúvida No Script (animações ataques)
» ajuda com script de inimigo para fazer com que ele só ataque quando ver o player
» [RESOLVIDO] OnTriggerEnter e OnTriggerExit parecem não funcionar script ataque inimigo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos