Alterar rotação do player via MOUSE;
3 participantes
Página 1 de 1
Alterar rotação do player via MOUSE;
Boa tarde galera, eu to vendo uns tutoriais de como fazer um "Top Down Shooter" e a movimentação que eles ensinam é de rotacionar o player com as setas "a,w,s,d"... e isso pra mim não ficou legal. Alguém sabe como alterar essa rotação para o o mouse?
No caso eu usaria as setas para movimentar o player e o mouse usaria para rotacionar. Eu tentei algumas coisas aqui e deu muita merda, então vou deixar o código pra vocês analisarem... valeuuu!!
No caso eu usaria as setas para movimentar o player e o mouse usaria para rotacionar. Eu tentei algumas coisas aqui e deu muita merda, então vou deixar o código pra vocês analisarem... valeuuu!!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent (typeof (CharacterController))]
public class PlayerController : MonoBehaviour {
//Handling
public float rotationSpeed = 450;
public float walkSpeed = 5;
public float runSpeed = 8;
//System
private Quaternion targetRotarion;
//Components
private CharacterController controller;
// Use this for initialization
void Start () {
controller = GetComponent<CharacterController>();
}
void Update () {
Vector3 input = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
if (input != Vector3.zero)
{
targetRotarion = Quaternion.LookRotation(input);
transform.eulerAngles = Vector3.up * Mathf.MoveTowardsAngle(transform.eulerAngles.y, targetRotarion.eulerAngles.y, rotationSpeed * Time.deltaTime);
}
Vector3 motion = input;
motion *= (Mathf.Abs(input.x) == 1 && Mathf.Abs(input.z) == 1) ? .7f : 1;
motion *= (Input.GetButton("Run")) ? runSpeed:walkSpeed;
motion += Vector3.up * -8;
controller.Move(motion * Time.deltaTime);
}
}
SammLIVE- Iniciante
- PONTOS : 2550
REPUTAÇÃO : 3
Idade : 28
Áreas de atuação : Produção Musical / Design Gráfico / Iniciante C#
Respeito as regras :
Re: Alterar rotação do player via MOUSE;
SammLIVE escreveu:Boa tarde galera, eu to vendo uns tutoriais de como fazer um "Top Down Shooter" e a movimentação que eles ensinam é de rotacionar o player com as setas "a,w,s,d"... e isso pra mim não ficou legal. Alguém sabe como alterar essa rotação para o o mouse?
No caso eu usaria as setas para movimentar o player e o mouse usaria para rotacionar. Eu tentei algumas coisas aqui e deu muita merda, então vou deixar o código pra vocês analisarem... valeuuu!!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent (typeof (CharacterController))]
public class PlayerController : MonoBehaviour {
//Handling
public float rotationSpeed = 450;
public float walkSpeed = 5;
public float runSpeed = 8;
//System
private Quaternion targetRotarion;
//Components
private CharacterController controller;
// Use this for initialization
void Start () {
controller = GetComponent<CharacterController>();
}
void Update () {
Vector3 input = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
if (input != Vector3.zero)
{
targetRotarion = Quaternion.LookRotation(input);
transform.eulerAngles = Vector3.up * Mathf.MoveTowardsAngle(transform.eulerAngles.y, targetRotarion.eulerAngles.y, rotationSpeed * Time.deltaTime);
}
Vector3 motion = input;
motion *= (Mathf.Abs(input.x) == 1 && Mathf.Abs(input.z) == 1) ? .7f : 1;
motion *= (Input.GetButton("Run")) ? runSpeed:walkSpeed;
motion += Vector3.up * -8;
controller.Move(motion * Time.deltaTime);
}
}
- Código:
public float speed;
void FixedUpdate ()
{
Plane playerPlane = new Plane(Vector3.up, transform.position);
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
float hitdist = 0.0f;
if (playerPlane.Raycast (ray, out hitdist))
{
Vector3 targetPoint = ray.GetPoint(hitdist);
Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime);
}
ESTE SCRIPT NÃO É MEU.
Referência: http://wiki .unity3d.com/index.php?title=LookAtMouse
(Junte o Wiki com o unity3d)
NKKF- ProgramadorMaster
- PONTOS : 4820
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Alterar rotação do player via MOUSE;
Valeu mano, consegui fazer funcionar!Souris escreveu:SammLIVE escreveu:Boa tarde galera, eu to vendo uns tutoriais de como fazer um "Top Down Shooter" e a movimentação que eles ensinam é de rotacionar o player com as setas "a,w,s,d"... e isso pra mim não ficou legal. Alguém sabe como alterar essa rotação para o o mouse?
No caso eu usaria as setas para movimentar o player e o mouse usaria para rotacionar. Eu tentei algumas coisas aqui e deu muita merda, então vou deixar o código pra vocês analisarem... valeuuu!!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent (typeof (CharacterController))]
public class PlayerController : MonoBehaviour {
//Handling
public float rotationSpeed = 450;
public float walkSpeed = 5;
public float runSpeed = 8;
//System
private Quaternion targetRotarion;
//Components
private CharacterController controller;
// Use this for initialization
void Start () {
controller = GetComponent<CharacterController>();
}
void Update () {
Vector3 input = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
if (input != Vector3.zero)
{
targetRotarion = Quaternion.LookRotation(input);
transform.eulerAngles = Vector3.up * Mathf.MoveTowardsAngle(transform.eulerAngles.y, targetRotarion.eulerAngles.y, rotationSpeed * Time.deltaTime);
}
Vector3 motion = input;
motion *= (Mathf.Abs(input.x) == 1 && Mathf.Abs(input.z) == 1) ? .7f : 1;
motion *= (Input.GetButton("Run")) ? runSpeed:walkSpeed;
motion += Vector3.up * -8;
controller.Move(motion * Time.deltaTime);
}
}
- Código:
public float speed;
void FixedUpdate ()
{
Plane playerPlane = new Plane(Vector3.up, transform.position);
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
float hitdist = 0.0f;
if (playerPlane.Raycast (ray, out hitdist))
{
Vector3 targetPoint = ray.GetPoint(hitdist);
Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime);
}
ESTE SCRIPT NÃO É MEU.
Referência: http://wiki .unity3d.com/index.php?title=LookAtMouse
(Junte o Wiki com o unity3d)
Agora não sei por que um script está dando erro ao tentar criar esse método
- Código:
private bool CanShoot()
{
}
Erro: Assets/Scripts/Gun.cs(48,18): error CS0161: `Gun.CanShoot()': not all code paths return a value
SammLIVE- Iniciante
- PONTOS : 2550
REPUTAÇÃO : 3
Idade : 28
Áreas de atuação : Produção Musical / Design Gráfico / Iniciante C#
Respeito as regras :
Re: Alterar rotação do player via MOUSE;
Isto porque ele não retorna nenhum valor, tente colocar:SammLIVE escreveu:Valeu mano, consegui fazer funcionar!Souris escreveu:SammLIVE escreveu:Boa tarde galera, eu to vendo uns tutoriais de como fazer um "Top Down Shooter" e a movimentação que eles ensinam é de rotacionar o player com as setas "a,w,s,d"... e isso pra mim não ficou legal. Alguém sabe como alterar essa rotação para o o mouse?
No caso eu usaria as setas para movimentar o player e o mouse usaria para rotacionar. Eu tentei algumas coisas aqui e deu muita merda, então vou deixar o código pra vocês analisarem... valeuuu!!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent (typeof (CharacterController))]
public class PlayerController : MonoBehaviour {
//Handling
public float rotationSpeed = 450;
public float walkSpeed = 5;
public float runSpeed = 8;
//System
private Quaternion targetRotarion;
//Components
private CharacterController controller;
// Use this for initialization
void Start () {
controller = GetComponent<CharacterController>();
}
void Update () {
Vector3 input = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
if (input != Vector3.zero)
{
targetRotarion = Quaternion.LookRotation(input);
transform.eulerAngles = Vector3.up * Mathf.MoveTowardsAngle(transform.eulerAngles.y, targetRotarion.eulerAngles.y, rotationSpeed * Time.deltaTime);
}
Vector3 motion = input;
motion *= (Mathf.Abs(input.x) == 1 && Mathf.Abs(input.z) == 1) ? .7f : 1;
motion *= (Input.GetButton("Run")) ? runSpeed:walkSpeed;
motion += Vector3.up * -8;
controller.Move(motion * Time.deltaTime);
}
}
- Código:
public float speed;
void FixedUpdate ()
{
Plane playerPlane = new Plane(Vector3.up, transform.position);
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
float hitdist = 0.0f;
if (playerPlane.Raycast (ray, out hitdist))
{
Vector3 targetPoint = ray.GetPoint(hitdist);
Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime);
}
ESTE SCRIPT NÃO É MEU.
Referência: http://wiki .unity3d.com/index.php?title=LookAtMouse
(Junte o Wiki com o unity3d)
Agora não sei por que um script está dando erro ao tentar criar esse método
- Código:
private bool CanShoot()
{
}
Erro: Assets/Scripts/Gun.cs(48,18): error CS0161: `Gun.CanShoot()': not all code paths return a value
- Código:
private bool CanShoot()
{
return true;
}
NKKF- ProgramadorMaster
- PONTOS : 4820
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Tópicos semelhantes
» Alguem pode me ajudar com rotação "rigidbody" mouse X e Y e rotação em Z com as teclas Q . E tudo ajustavel!! em C#
» a rotacao do player esta errada!
» [Duvida] Rotação Horizontal Com O Mouse.
» Player mirar e seguir o mouse
» [DUVIDA] Problemas na rotação de uma esfera com o mouse ( AddTorque )
» a rotacao do player esta errada!
» [Duvida] Rotação Horizontal Com O Mouse.
» Player mirar e seguir o mouse
» [DUVIDA] Problemas na rotação de uma esfera com o mouse ( AddTorque )
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos