[RESOLVIDO] Ajuda Com Código
3 participantes
Página 1 de 1
[RESOLVIDO] Ajuda Com Código
Olá Senhores estou em duvida este código de movimentação de personagens sou meio inexperiente então venho pedir sua ajuda segue o código e as algumas coisas que tentei fazer.
esta dando erro na parte da camera mais especificamente aqui e não consigo resolver !
eu já tentei trocar por isso :
o código funcionou so que quando aperto para ir para algum lado ele fica girando !!
- Código:
using UnityEngine;
using System.Collections;
public class WarriorAnimationDemoFREE : MonoBehaviour
{
public Animator animator;
float rotationSpeed = 30;
Vector3 inputVec;
Vector3 targetDirection;
//Warrior types
public enum Warrior{Karate, Ninja, Brute, Sorceress, Knight, Mage, Archer, TwoHanded, Swordsman, Spearman, Hammer, Crossbow};
public Warrior warrior;
void Update()
{
//Get input from controls
float z = Input.GetAxisRaw("Horizontal");
float x = -(Input.GetAxisRaw("Vertical"));
inputVec = new Vector3(x, 0, z);
//Apply inputs to animator
animator.SetFloat("Input X", z);
animator.SetFloat("Input Z", -(x));
if (x != 0 || z != 0 ) //if there is some input
{
//set that character is moving
animator.SetBool("Moving", true);
animator.SetBool("Running", true);
}
else
{
//character is not moving
animator.SetBool("Moving", false);
animator.SetBool("Running", false);
}
if (Input.GetButtonDown("Fire1"))
{
animator.SetTrigger("Attack1Trigger");
if (warrior == Warrior.Brute)
StartCoroutine (COStunPause(1.2f));
else if (warrior == Warrior.Sorceress)
StartCoroutine (COStunPause(1.2f));
else
StartCoroutine (COStunPause(.6f));
}
UpdateMovement(); //update character position and facing
}
public IEnumerator COStunPause(float pauseTime)
{
yield return new WaitForSeconds(pauseTime);
}
//converts control input vectors into camera facing vectors
void GetCameraRelativeMovement()
{
Transform cameraTransform = Camera.main.transform ;
// Forward vector relative to the camera along the x-z plane
Vector3 forward = cameraTransform.TransformDirection(Vector3.forward);
forward.y = 0;
forward = forward.normalized;
// Right vector relative to the camera
// Always orthogonal to the forward vector
Vector3 right= new Vector3(forward.z, 0, -forward.x);
//directional inputs
float v= Input.GetAxisRaw("Vertical");
float h= Input.GetAxisRaw("Horizontal");
// Target direction relative to the camera
targetDirection = h * right + v * forward;
}
//face character along input direction
void RotateTowardMovementDirection()
{
if (inputVec != Vector3.zero)
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(targetDirection), Time.deltaTime * rotationSpeed);
}
}
void UpdateMovement()
{
//get movement input from controls
Vector3 motion = inputVec;
//reduce input for diagonal movement
motion *= (Mathf.Abs(inputVec.x) == 1 && Mathf.Abs(inputVec.z) == 1)?.7f:1;
RotateTowardMovementDirection();
GetCameraRelativeMovement();
}
void OnGUI ()
{
if (GUI.Button (new Rect (25, 85, 100, 30), "Attack1"))
{
animator.SetTrigger("Attack1Trigger");
if (warrior == Warrior.Brute || warrior == Warrior.Sorceress) //if character is Brute or Sorceress
StartCoroutine (COStunPause(1.2f));
else
StartCoroutine (COStunPause(.6f));
}
}
}
esta dando erro na parte da camera mais especificamente aqui e não consigo resolver !
- Código:
//converts control input vectors into camera facing vectors
void GetCameraRelativeMovement()
{
Transform cameraTransform = Camera.main.transform ;
// Forward vector relative to the camera along the x-z plane
Vector3 forward = cameraTransform.TransformDirection(Vector3.forward);
forward.y = 0;
forward = forward.normalized;
// Right vector relative to the camera
// Always orthogonal to the forward vector
Vector3 right= new Vector3(forward.z, 0, -forward.x);
//directional inputs
float v= Input.GetAxisRaw("Vertical");
float h= Input.GetAxisRaw("Horizontal");
// Target direction relative to the camera
targetDirection = h * right + v * forward;
}
- Código:
Transform cameraTransform = Camera.main.transform ;
eu já tentei trocar por isso :
- Código:
Transform cameraTransform = transform ;
o código funcionou so que quando aperto para ir para algum lado ele fica girando !!
Soulphantom- Membro
- PONTOS : 3225
REPUTAÇÃO : 3
Idade : 24
Áreas de atuação : PHP,HTML,C#,Blender etc
Respeito as regras :
Re: [RESOLVIDO] Ajuda Com Código
Adicione a tag "MainCamera" para sua câmera e tente trocar por este código:
- Código:
using UnityEngine;
using System.Collections;
public class WarriorAnimationDemoFREE : MonoBehaviour
{
public Animator animator;
float rotationSpeed = 30;
Vector3 inputVec;
Vector3 targetDirection;
//Warrior types
public enum Warrior{Karate, Ninja, Brute, Sorceress, Knight, Mage, Archer, TwoHanded, Swordsman, Spearman, Hammer, Crossbow};
public Warrior warrior;
void Update()
{
//Get input from controls
float z = Input.GetAxisRaw("Horizontal");
float x = -(Input.GetAxisRaw("Vertical"));
inputVec = new Vector3(x, 0, z);
//Apply inputs to animator
animator.SetFloat("Input X", z);
animator.SetFloat("Input Z", -(x));
if (x != 0 || z != 0 ) //if there is some input
{
//set that character is moving
animator.SetBool("Moving", true);
animator.SetBool("Running", true);
}
else
{
//character is not moving
animator.SetBool("Moving", false);
animator.SetBool("Running", false);
}
if (Input.GetButtonDown("Fire1"))
{
animator.SetTrigger("Attack1Trigger");
if (warrior == Warrior.Brute)
StartCoroutine (COStunPause(1.2f));
else if (warrior == Warrior.Sorceress)
StartCoroutine (COStunPause(1.2f));
else
StartCoroutine (COStunPause(.6f));
}
UpdateMovement(); //update character position and facing
}
public IEnumerator COStunPause(float pauseTime)
{
yield return new WaitForSeconds(pauseTime);
}
//converts control input vectors into camera facing vectors
void GetCameraRelativeMovement()
{
Transform cameraTransform = GameObject.FindGameObjectWithTag("MainCamera").transform ;
// Forward vector relative to the camera along the x-z plane
Vector3 forward = cameraTransform.TransformDirection(Vector3.forward);
forward.y = 0;
forward = forward.normalized;
// Right vector relative to the camera
// Always orthogonal to the forward vector
Vector3 right= new Vector3(forward.z, 0, -forward.x);
//directional inputs
float v= Input.GetAxisRaw("Vertical");
float h= Input.GetAxisRaw("Horizontal");
// Target direction relative to the camera
targetDirection = h * right + v * forward;
}
//face character along input direction
void RotateTowardMovementDirection()
{
if (inputVec != Vector3.zero)
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(targetDirection), Time.deltaTime * rotationSpeed);
}
}
void UpdateMovement()
{
//get movement input from controls
Vector3 motion = inputVec;
//reduce input for diagonal movement
motion *= (Mathf.Abs(inputVec.x) == 1 && Mathf.Abs(inputVec.z) == 1)?.7f:1;
RotateTowardMovementDirection();
GetCameraRelativeMovement();
}
void OnGUI ()
{
if (GUI.Button (new Rect (25, 85, 100, 30), "Attack1"))
{
animator.SetTrigger("Attack1Trigger");
if (warrior == Warrior.Brute || warrior == Warrior.Sorceress) //if character is Brute or Sorceress
StartCoroutine (COStunPause(1.2f));
else
StartCoroutine (COStunPause(.6f));
}
}
}
George Lucas Vieira- Avançado
- PONTOS : 3391
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Re: [RESOLVIDO] Ajuda Com Código
Cara Muito Obrigado deu certo sim vlw!!!!!!!! :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D
Soulphantom- Membro
- PONTOS : 3225
REPUTAÇÃO : 3
Idade : 24
Áreas de atuação : PHP,HTML,C#,Blender etc
Respeito as regras :
Re: [RESOLVIDO] Ajuda Com Código
Q bom hehe XDSoulphantom escreveu:Cara Muito Obrigado deu certo sim vlw!!!!!!!! :D :D :D :D :D :D :D :D :D :D :D :D :D :D
George Lucas Vieira- Avançado
- PONTOS : 3391
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] NullReferenceException : Error Código JS
» Ajuda com o codigo.
» Ajuda em código com Events!
» Ajuda com código Raycast2D
» Ajuda com codigo (Visual Studio 17)
» Ajuda com o codigo.
» Ajuda em código com Events!
» Ajuda com código Raycast2D
» Ajuda com codigo (Visual Studio 17)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos