AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
2 participantes
Página 1 de 1
AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
Como eu posso fazer para colocar animações para quando o personagem estiver olhando para o mouse, eu fiz uma variável bool chamada CanAim, para quando eu pressiona o botão direito do mouse ele entra em modo mira, e ate ai ta tudo certo o problema e quando eu tento colocar as animações, eu ate consegui porem, elas ficam mt bugadas, vou linkar um vídeo aki para vcs verem como esta no momento.
Video do Marcos, no qual eu usei o código:
- Código:
if (canAim)
{
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100))
{
Vector3 playerToMouse = hit.point - transform.position;
playerToMouse.y = 0;
Quaternion newRotation = Quaternion.LookRotation(playerToMouse);
rb.MoveRotation(newRotation);
animator.SetBool("AimPistol", true);
anim._animRun = false;
moviment = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moviment = moviment.normalized * speed/2 * Time.deltaTime;
//////////////////////////////////////////////
if (Input.GetAxis("Horizontal") >= 0.1f)
{
animator.SetBool("StrafeRight", true);
}
else
{
animator.SetBool("StrafeRight", false);
}
//////////////////////////////////////////////
if (Input.GetAxis("Horizontal") <= -0.1f)
{
animator.SetBool("StrafeLeft", true);
}
else
{
animator.SetBool("StrafeLeft", false);
}
//////////////////////////////////////////////
if (Input.GetAxis("Vertical") >= 0.1f)
{
animator.SetBool("RunWeapon", true);
}
else
{
animator.SetBool("RunWeapon", false);
}
//////////////////////////////////////////////
if (Input.GetAxis("Vertical") <= -0.1f)
{
animator.SetBool("PistolBackward", true);
}
else
{
animator.SetBool("PistolBackward", false);
}
rb.MovePosition(transform.position + moviment);
}
}
Video do Marcos, no qual eu usei o código:
daniel123163- Membro
- PONTOS : 3613
REPUTAÇÃO : 1
Respeito as regras :
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
O seu vídeo está indisponível... Mas de qualquer maneira, é mais fácil fazer este tipo de coisa via código mesmo do que utilizar animações.
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
O vídeo tava privado, foi mal n tinha vistoMarcosSchultz escreveu:O seu vídeo está indisponível... Mas de qualquer maneira, é mais fácil fazer este tipo de coisa via código mesmo do que utilizar animações.
daniel123163- Membro
- PONTOS : 3613
REPUTAÇÃO : 1
Respeito as regras :
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
Conseguiu ver o video ?MarcosSchultz escreveu:O seu vídeo está indisponível... Mas de qualquer maneira, é mais fácil fazer este tipo de coisa via código mesmo do que utilizar animações.
daniel123163- Membro
- PONTOS : 3613
REPUTAÇÃO : 1
Respeito as regras :
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
Consegui... Mas o que exatamente está bugado nas animações? A direção em que elas ocorrem? Se for isto, preciso de mais informações...
Provavelmente você está setando a direção das animações por meio dos inputs Horizontal e Vertical... Mas se você tem outro parâmetro para girar o personagem, você tem que usar este parâmetro, ou partir direto para um transform.forword, que vai informar a direção "para frente" do seu jogador. Ai bastaria fazer um comando para multiplicar a direção por um Mathf.Abs da soma dos inputs (horizontal + vertical).
Está meio confuso talvez, mas vamos por partes. Como está sendo feita a parte da animação?
Provavelmente você está setando a direção das animações por meio dos inputs Horizontal e Vertical... Mas se você tem outro parâmetro para girar o personagem, você tem que usar este parâmetro, ou partir direto para um transform.forword, que vai informar a direção "para frente" do seu jogador. Ai bastaria fazer um comando para multiplicar a direção por um Mathf.Abs da soma dos inputs (horizontal + vertical).
Está meio confuso talvez, mas vamos por partes. Como está sendo feita a parte da animação?
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
Eu fiz uma condição,MarcosSchultz escreveu:Consegui... Mas o que exatamente está bugado nas animações? A direção em que elas ocorrem? Se for isto, preciso de mais informações...
Provavelmente você está setando a direção das animações por meio dos inputs Horizontal e Vertical... Mas se você tem outro parâmetro para girar o personagem, você tem que usar este parâmetro, ou partir direto para um transform.forword, que vai informar a direção "para frente" do seu jogador. Ai bastaria fazer um comando para multiplicar a direção por um Mathf.Abs da soma dos inputs (horizontal + vertical).
Está meio confuso talvez, mas vamos por partes. Como está sendo feita a parte da animação?
[list=linenums]
[*]if (Input.GetAxis("Horizontal") >= 0.1f)
[*] {
[*] animator.SetBool("StrafeRight", true);
[*] }
[*] else
[*] {
[*] animator.SetBool("StrafeRight", false);
[*] }
[/list]
daniel123163- Membro
- PONTOS : 3613
REPUTAÇÃO : 1
Respeito as regras :
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
O "Bug" é q si eu estiver apertando o W, ele faz a animação de ir para frente, até aí tudo bem, mais si eu apontar o mouse para baixo, e continua apertando o W ele faz a animaçãode ir para frente andando de costas.MarcosSchultz escreveu:Consegui... Mas o que exatamente está bugado nas animações? A direção em que elas ocorrem? Se for isto, preciso de mais informações...
Provavelmente você está setando a direção das animações por meio dos inputs Horizontal e Vertical... Mas se você tem outro parâmetro para girar o personagem, você tem que usar este parâmetro, ou partir direto para um transform.forword, que vai informar a direção "para frente" do seu jogador. Ai bastaria fazer um comando para multiplicar a direção por um Mathf.Abs da soma dos inputs (horizontal + vertical).
Está meio confuso talvez, mas vamos por partes. Como está sendo feita a parte da animação?
daniel123163- Membro
- PONTOS : 3613
REPUTAÇÃO : 1
Respeito as regras :
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
Poste o código todo que gerencia as animações...
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
Amanhã eu posto eu n tô no Pc agr :/MarcosSchultz escreveu:Poste o código todo que gerencia as animações...
daniel123163- Membro
- PONTOS : 3613
REPUTAÇÃO : 1
Respeito as regras :
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
MarcosSchultz escreveu:Poste o código todo que gerencia as animações...
- Código:
using UnityEngine;
using System.Collections;
public class DirectionalMove : MonoBehaviour {
// Animation script
private CharacterAnimation anim;
// Speed variables
private float speed = 10f;
private float speedHalved = 7.5f;
private float speedOrigin = 10f;
//public static bool canShot;
//public float timeOfWait;
public RaycastHit hit;
public bool movementMouse = false;
public Rigidbody rb;
public bool canAim;
Vector3 moviment;
public static Animator animator;
public WeaponBase weaponsBase;
void Start()
{
animator = GetComponentInChildren<Animator>();
canAim = false;
rb = GetComponent<Rigidbody>();
//canShot = true;
anim = GetComponent<CharacterAnimation>(); // Get the animation script
}
void Update()
{
weaponsBase = GetComponentInChildren<WeaponBase>();
if (Input.GetMouseButton(0) && weaponSpawn.haveChild == true
//&& canShot == true
&& weaponsBase.amountBullets > 0
&& canAim
&& !weaponsBase.reload
&& !DirectionalMove.animator.GetCurrentAnimatorStateInfo(1).IsName("Reloading"))
{
GetComponentInChildren<WeaponBase>().Shot();
//canShot = false;
//StartCoroutine("CanFire");
http://Debug.Log("Piu piu");
}
if (Input.GetMouseButton(1) && weaponSpawn.haveChild == true)
{
canAim = true;
http://Debug.Log("certo");
}else
{
canAim = false;
}
}
//public IEnumerator CanFire()
//{
// yield return new WaitForSeconds(timeOfWait);
// canShot = true;
//}
// FixedUpdate is used for physics based movement
void FixedUpdate ()
{
if (canAim)
{
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100))
{
Vector3 playerToMouse = hit.point - transform.position;
playerToMouse.y = 0;
Quaternion newRotation = Quaternion.LookRotation(playerToMouse);
rb.MoveRotation(newRotation);
animator.SetBool("AimPistol", true);
anim._animRun = false;
moviment = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moviment = moviment.normalized * speed/2 * Time.deltaTime;
//////////////////////////////////////////////
if (Input.GetAxis("Horizontal") >= 0.1f)
{
animator.SetBool("StrafeRight", true);
}
else
{
animator.SetBool("StrafeRight", false);
}
//////////////////////////////////////////////
if (Input.GetAxis("Horizontal") <= -0.1f)
{
animator.SetBool("StrafeLeft", true);
}
else
{
animator.SetBool("StrafeLeft", false);
}
//////////////////////////////////////////////
if (Input.GetAxis("Vertical") >= 0.1f)
{
animator.SetBool("RunWeapon", true);
}
else
{
animator.SetBool("RunWeapon", false);
}
//////////////////////////////////////////////
if (Input.GetAxis("Vertical") <= -0.1f)
{
animator.SetBool("PistolBackward", true);
}
else
{
animator.SetBool("PistolBackward", false);
}
rb.MovePosition(transform.position + moviment);
}
}
if (canAim == false)
{
animator.SetBool("StrafeLeft", false);
animator.SetBool("StrafeRight", false);
animator.SetBool("AimPistol", false);
animator.SetBool("PistolBackward", false);
animator.SetBool("RunWeapon", false);
float horizontal = Input.GetAxis("Horizontal"); // set a float to control horizontal input
float vertical = Input.GetAxis("Vertical"); // set a float to control vertical input
PlayerMove(horizontal, vertical); // Call the move player function sending horizontal and vertical movements
}
}
private void PlayerMove(float h, float v)
{
if (h != 0f || v != 0f) // If horizontal or vertical are pressed then continue
{
if(h != 0f && v != 0f) // If horizontal AND vertical are pressed then continue
{
speed = speedHalved; // Modify the speed to adjust for moving on an angle
}
else // If only horizontal OR vertical are pressed individually then continue
{
speed = speedOrigin; // Keep speed to it's original value
}
Vector3 targetDirection = new Vector3(h, 0f, v); // Set a direction using Vector3 based on horizontal and vertical input
GetComponent<Rigidbody>().MovePosition(GetComponent<Rigidbody>().position + targetDirection * speed * Time.deltaTime); // Move the players position based on current location while adding the new targetDirection times speed
RotatePlayer(targetDirection); // Call the rotate player function sending the targetDirection variable
anim._animRun = true; // Enable the run animation
}
else // If horizontal or vertical are not pressed then continue
{
anim._animRun = false; // Disable the run animation
}
}
private void RotatePlayer(Vector3 dir)
{
GetComponent<Rigidbody>().MoveRotation(Quaternion.LookRotation(dir)); // Rotate the player to look at the new targetDirection
}
public AudioSource[] soundData;
public void PlaySound()
{
if (!soundData[0].isPlaying)
soundData[0].Play();
else
soundData[1].Play();
}
}
- Código:
using UnityEngine;
using System.Collections;
public class CharacterAnimation : MonoBehaviour {
// Public boolean for running animation
public bool _animRun;
// Animator variables
private Animator anim;
private string animRun = "Run";
void Start()
{
anim = GetComponentInChildren<Animator>(); // Get the animator component
}
void Update()
{
if (_animRun) // If _animRun is true then continue. Se _animRun for verdadeiro, continue
{
anim.SetBool(animRun, true); // Set the animator Bool with the String Value of animRun to True.
}
else // If _animRun is false then continue
{
anim.SetBool(animRun, false); // Set the animator Bool with the String Value of animRun to True
}
}
}
daniel123163- Membro
- PONTOS : 3613
REPUTAÇÃO : 1
Respeito as regras :
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
Pronto.MarcosSchultz escreveu:Poste o código todo que gerencia as animações...
daniel123163- Membro
- PONTOS : 3613
REPUTAÇÃO : 1
Respeito as regras :
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
para simplificar eu so queria adicionar animação nesse script q vc criou, vc bem q podia postar um tutorial assim kkkMarcosSchultz escreveu:Poste o código todo que gerencia as animações...
daniel123163- Membro
- PONTOS : 3613
REPUTAÇÃO : 1
Respeito as regras :
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
Seria possível postar o projeto? Talvez até por MP. Eu tentei ajeitar algumas coisas mas não tem como verificar se funciona ou não.
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
Tranquilo, amanhã eu posto aki pq n tô no Pc agr.MarcosSchultz escreveu:Seria possível postar o projeto? Talvez até por MP. Eu tentei ajeitar algumas coisas mas não tem como verificar se funciona ou não.
daniel123163- Membro
- PONTOS : 3613
REPUTAÇÃO : 1
Respeito as regras :
Re: AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
Ta aqui mano, n liga pro nome do projeto n kkk é uma piada interna kkk.MarcosSchultz escreveu:Seria possível postar o projeto? Talvez até por MP. Eu tentei ajeitar algumas coisas mas não tem como verificar se funciona ou não.
Pode haver algumas alterações nos scripts, comparado ao q esta ai pra cima, pq enquanto eu esperava por ajuda aqui, eu tava adiantando outras coisas no projeto, então si tiver alguma alteração nos scripts n se preocupe kk.
https://drive.google.com/open?id=1HZmMSODyGbEbwWcmhUdhjm3pvdRUZXZ5
1,24 gb
daniel123163- Membro
- PONTOS : 3613
REPUTAÇÃO : 1
Respeito as regras :
Tópicos semelhantes
» Rotacionar objeto e mover para a direita e para a esquerda
» Mover/Rotacionar personagem com joystick virtual para Android!
» [TUTORIAL] Atirar objeto para a posição do MOUSE
» [TUTORIAL] Mover Objeto para lugar do click do Mouse
» Sprite rotacionar de acordo com a posição do mouse
» Mover/Rotacionar personagem com joystick virtual para Android!
» [TUTORIAL] Atirar objeto para a posição do MOUSE
» [TUTORIAL] Mover Objeto para lugar do click do Mouse
» Sprite rotacionar de acordo com a posição do mouse
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos