SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
NavMashAgent
modelos de braços 3d
Jogo estilo clash of clans
Como ver dos 2 lados de um plane ou quad?
[TUTORIAL] Criando jogo de cartas com I.A (C# e Visual Studio) - Parte 01
PITCH para aceleração de carro. Como que faço mesmo?
Sistema de Yu-Gi-Oh! - ATT [2020]
[ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
Somar int, como faz pra ele adicionar o valor que eu quero.
Bug? no animator
Duvida Material c#
Unity Admob Erro
Unity - Lentidão e Aceleração alteradas do nada!!!
Como faço para mudar o valor de uma float gradualmente
[TUTORIAL] Criando um simples Multiplayer [UNITY 5]
Como selecionar ou desselecionar uma imagem na Unity com uma borda?
Random Material
Dúvida sobre detecção do personagem
Procurando Equipe para Dev de um Gta Brasileiro.
Problemas com o transform.position com GameObjects 3D
Shaders
Botão no canvas faz o player movimentar
Sistema de Screenshots v2
Textura está bugada ficando branco em uma parte
Calculadora com raiz quadrada C#
Conectar ao servidor
Script de tiro unity 3d
Barra de procura
Randomizar objetos em posições válidas.
Unity-Transform.position e Rigidbory VS CharacterController. Qual o melhor?
[RESOLVIDO] network transform e network identity nos objetos filhos
Como trocar um sprite pelo outro?
Como faço para detectar a velocidade do meu player?
como faço um multiplayer na unity 5?
Dúvida sobre "Luzinha"?
Meu primero multiplayer online game feito no unity
Como mudar a cor de um sprite?
Demo do meu jogo Survival Zombie
Unity5 FBX Exporter (Free Package/Asset)
Personagem tremendo
[RESOLVIDO] Movetowards depois de esperar um tempo, não funciona!
Como fazer para aparecer poucas resoluções no meu menu de opções.
Contagem C#
Raycast colidindo com Player
Duvidas sobre soma entre float
Como faço para modificar o ponto incial e direcionar um raycast?
Unity
como resolver bordas pixelizadas?
Transformação de personagem
ao buildar para android o jogo tem compotamento diferente
[RESOLVIDO] Copiar a rotação de um Objeto para outro.
Ajuda com php
Animação não está a funcionar
[RESOLVIDO] Duvida com raycast
Animator
FixedUpdate Fica Dando Erro na Hora que a Colisão Acontece
ERRO NO JOGO BUILDADO, MAS OCORRE TUDO CERTO NO CONSOLE
Preciso de dicas para configurar o Bake do Lighting Para Android
como dminuir o lag no meu unity 5
Qual seria a melhor maneira de criar um Map Mundi interativo?
Ativar Ui apenas se o player estiver perto do objeto especifico
Tela de missão
[RESOLVIDO] Como fazer efeitos sonoros tocarem aleatoriamente
Collab Arruinando meu Projeto
Textura escura
Erro no SketchUP
3D Text Material Sobressalente
[RESOLVIDO] Problema no Input System
Como faço para um objeto ficar num tom de azul?
[RESOLVIDO] erro: ''ArgumentException: Input Button jump is not setup'' ?
Photon Pun2 - Error: NewScene Clean
[TUTORIAL] Acessar o objeto pai de algum hit.
[RESOLVIDO] Encontrar um objeto que está dentro de um Prefab.
[TUTORIAL] Inimigo olhar para você (Java Script)
[RESOLVIDO] Erro no Script tocar Audio
[RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Duvida sobre deixar jogo online.
Unity - Animator Controller sendo apagado sozinho
[RESOLVIDO] Meu jogo ta com uns bug no fog linear. o chão fica preto :/
[RESOLVIDO] AI Points e NavMesh
[RESOLVIDO] Como pegar moeda e ela desaparecer?
[TUTORIAL] Sistema Pdv, Mercado, Padaria, Conveniência, Lojas Em Geral - C# VISUAL STUDIO
Como desativar o FirstPersonController
Como tira Application.UptadeScene?
Gostaria de fazer a animação do arco seguir animação do personagem
Animação Blender para Unity?
[RESOLVIDO] Unity - Giro do Personagem não está funcionando direito
Bug - Unity rodando com menos FPS no BAIXO e MAIS no ULTRA
[RESOLVIDO] Dúvida sobre multiplayer
Luz atravessando paredes
Problema de compilação
[RESOLVIDO] LayerMask
c# unity
[TUTORIAL] Banco de dados || MySQL
[RESOLVIDO] Fade In e Out na Timeline
[RESOLVIDO] Unity - Testar o Jogo pelo Celular em Tempo Real
Ajuda com Grappling hook
[RESOLVIDO] Erro criando IA inimigo
[RESOLVIDO] Animator
Hoje à(s) 23:27
Hoje à(s) 23:16
Hoje à(s) 17:48
Hoje à(s) 15:12
Hoje à(s) 09:34
Ontem à(s) 22:47
Ontem à(s) 21:43
Ontem à(s) 20:33
Ontem à(s) 18:06
Sex 14 Maio 2021, 19:42
Sex 14 Maio 2021, 14:08
Sex 14 Maio 2021, 10:50
Sex 14 Maio 2021, 02:12
Qui 13 Maio 2021, 23:39
Qui 13 Maio 2021, 20:01
Qui 13 Maio 2021, 14:42
Qui 13 Maio 2021, 14:35
Qui 13 Maio 2021, 13:43
Qui 13 Maio 2021, 12:39
Qui 13 Maio 2021, 11:36
Qui 13 Maio 2021, 08:38
Qua 12 Maio 2021, 22:25
Qua 12 Maio 2021, 16:59
Qua 12 Maio 2021, 16:24
Qua 12 Maio 2021, 14:15
Qua 12 Maio 2021, 12:59
Ter 11 Maio 2021, 23:27
Ter 11 Maio 2021, 18:59
Ter 11 Maio 2021, 16:07
Seg 10 Maio 2021, 21:53
Seg 10 Maio 2021, 19:13
Seg 10 Maio 2021, 19:05
Seg 10 Maio 2021, 17:19
Seg 10 Maio 2021, 16:42
Seg 10 Maio 2021, 15:19
Seg 10 Maio 2021, 12:43
Seg 10 Maio 2021, 09:23
Dom 09 Maio 2021, 16:08
Sab 08 Maio 2021, 16:57
Sab 08 Maio 2021, 16:56
Sab 08 Maio 2021, 16:31
Sab 08 Maio 2021, 15:50
Sab 08 Maio 2021, 14:30
Sex 07 Maio 2021, 20:56
Sex 07 Maio 2021, 20:14
Sex 07 Maio 2021, 15:15
Sex 07 Maio 2021, 10:23
Sex 07 Maio 2021, 08:24
Qui 06 Maio 2021, 21:32
Qui 06 Maio 2021, 20:46
Qui 06 Maio 2021, 20:15
Qui 06 Maio 2021, 20:14
Qui 06 Maio 2021, 15:21
Qui 06 Maio 2021, 14:46
Qui 06 Maio 2021, 11:36
Qui 06 Maio 2021, 03:08
Qua 05 Maio 2021, 20:27
Ter 04 Maio 2021, 18:50
Ter 04 Maio 2021, 07:38
Seg 03 Maio 2021, 11:34
Seg 03 Maio 2021, 11:22
Seg 03 Maio 2021, 08:53
Seg 03 Maio 2021, 02:44
Dom 02 Maio 2021, 18:04
Dom 02 Maio 2021, 17:22
Dom 02 Maio 2021, 17:03
Dom 02 Maio 2021, 17:00
Sab 01 Maio 2021, 20:02
Sab 01 Maio 2021, 12:07
Sab 01 Maio 2021, 11:02
Sab 01 Maio 2021, 07:08
Sex 30 Abr 2021, 16:34
Sex 30 Abr 2021, 14:12
Qui 29 Abr 2021, 13:26
Qui 29 Abr 2021, 12:48
Qui 29 Abr 2021, 12:45
Qui 29 Abr 2021, 11:02
Qui 29 Abr 2021, 00:31
Qua 28 Abr 2021, 22:53
Qua 28 Abr 2021, 18:01
Qua 28 Abr 2021, 15:55
Qua 28 Abr 2021, 14:35
Qua 28 Abr 2021, 14:03
Ter 27 Abr 2021, 22:50
Seg 26 Abr 2021, 22:07
Seg 26 Abr 2021, 15:18
Seg 26 Abr 2021, 00:41
Seg 26 Abr 2021, 00:28
Dom 25 Abr 2021, 22:01
Dom 25 Abr 2021, 20:17
Dom 25 Abr 2021, 01:52
Sab 24 Abr 2021, 15:37
Sab 24 Abr 2021, 11:34
Sex 23 Abr 2021, 23:46
Sex 23 Abr 2021, 15:22
Qui 22 Abr 2021, 19:54
Qui 22 Abr 2021, 14:18
Qui 22 Abr 2021, 06:45
Qua 21 Abr 2021, 22:54
Fagner
JulioWinchester
TigerStudios
verme1311
MajorH
RodrigoPrivilegium
MajorH
Felipe42
Fagner
WLCS22
Fagner
nando07
WLCS22
MayLeone
RGT2020
tautologias345
Pokedlg
Xavier
glauco
vphyre
Joana
acefogo
AnderGames
marbiel18
AthaideYi
Xavier
Charlesoff
Joana
Mozinhas2
WLCS22
Xavier
Pokedlg
Charlesoff
TIKO
Fagner
RGT2020
stratengine
stratengine
ProBrStalker
xYcar
WLCS22
Pokedlg
Mozinhas2
Charlesoff
stratengine
Charlesoff
Joana
NKKF
Xavier
Fagner
Fagner
loucoporjogo
Joana
Pokedlg
Xavier
adrianobros2
stratengine
glauco
speedluk
Traygus
MarcosSchultz
Maria Elisa
BlesseD
NKKF
Fagner
Fagner
Fagner
Rangel Oblivion
Phelipe
Pokedlg
Elizeuvix
MartinsCG
RenatoBarreto
MartinsCG
FelipeSouza11
adrianobros2
loucoporjogo
WLCS22
JulioWinchester
TIKO
FelixTedesco
dirceuinfo
FelixTedesco
poyser
hendrick22
ProblemX
WLCS22
NKKF
Xavier
SauloeArthur
MayLeone
hellside
Mozinhas2
LuccaGiffoni
Triskal
WLCS22
JohnRambo
SauloeArthur
Fagner

Fazer o personagem apontar na direção do movimento

Ir em baixo

DÚVIDA Fazer o personagem apontar na direção do movimento

Mensagem por GattiMene Seg 07 Set 2020, 21:31

Bom... basicamente eu queria fazer meu personagem apontar pra direção que ele se move, por exemplo, se ele estiver se movendo pra direita, ele rotaciona pra direita, se ele se mover pra esquerda, ele rotaciona pra esquerda, como é na maioria dos jogos 3d, tipo mario galaxy... porém não é tão simples, porque meu personagem se move em um planeta com um sistema de gravidade esférica e usa rigidbody... esse é o script de movimento

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{

    public GameObject Planet;
    public GameObject PlayerPlaceholder;


    public float speed = 4;
    public float JumpHeight = 1.2f;

    float gravity = 100;
    bool OnGround = false;


    float distanceToGround;
    Vector3 Groundnormal;

    public Animator Animations;
    public float AnimationActivation;

    private Rigidbody rb;

    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        rb.freezeRotation = true;
    }

    // Update is called once per frame
    void Update()
    {

        //MOVEMENT

        float x = Input.GetAxis("Horizontal") * Time.deltaTime * speed;
        float z = Input.GetAxis("Vertical") * Time.deltaTime * speed;

        AnimationActivation = Mathf.Abs(x) + Mathf.Abs(z);

        transform.Translate(x, 0, z);

        //Local Rotation

        if (Input.GetKey(KeyCode.E))
        {

            transform.Rotate(0, 150 * Time.deltaTime, 0);
        }
        if (Input.GetKey(KeyCode.Q))
        {

            transform.Rotate(0, -150 * Time.deltaTime, 0);
        }

        //Jump

        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb.AddForce(transform.up * 40000 * JumpHeight * Time.deltaTime);

        }



        //GroundControl

        RaycastHit hit = new RaycastHit();
        if (Physics.Raycast(transform.position, -transform.up, out hit, 10))
        {

            distanceToGround = hit.distance;
            Groundnormal = hit.normal;

            if (distanceToGround <= 0.2f)
            {
                OnGround = true;
            }
            else
            {
                OnGround = false;
            }


        }


        //GRAVITY and ROTATION

        Vector3 gravDirection = (transform.position - Planet.transform.position).normalized;

        if (OnGround == false)
        {
            rb.AddForce(gravDirection * -gravity);

        }

        //

        Quaternion toRotation = Quaternion.FromToRotation(transform.up, Groundnormal) * transform.rotation;
        transform.rotation = toRotation;

        if (AnimationActivation != 0)
        {

            Animations.SetInteger("AnimationState", 1);

        }
        else if (AnimationActivation == 0)
        {

            Animations.SetInteger("AnimationState", 0);

        }

    }


    //CHANGE PLANET

    private void OnTriggerEnter(Collider collision)
    {
        if (collision.transform != Planet.transform)
        {

            Planet = collision.transform.gameObject;

            Vector3 gravDirection = (transform.position - Planet.transform.position).normalized;

            Quaternion toRotation = Quaternion.FromToRotation(transform.up, gravDirection) * transform.rotation;
            transform.rotation = toRotation;

            rb.velocity = Vector3.zero;
            rb.AddForce(gravDirection * gravity);


            PlayerPlaceholder.GetComponent<TutorialPlayerPlaceholder>().NewPlanet(Planet);

        }
    }


}
Precisava muito disso, quem puder ajudar agradeço...

GattiMene
Membro
Membro

PONTOS : 1053
REPUTAÇÃO : 2
Respeito as regras : Fazer o personagem apontar na direção do movimento WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Fazer o personagem apontar na direção do movimento

Mensagem por zuziv Ter 08 Set 2020, 11:12

@GattiMene escreveu:Bom... basicamente eu queria fazer meu personagem apontar pra direção que ele se move, por exemplo, se ele estiver se movendo pra direita, ele rotaciona pra direita, se ele se mover pra esquerda, ele rotaciona pra esquerda, como é na maioria dos jogos 3d, tipo mario galaxy... porém não é tão simples, porque meu personagem se move em um planeta com um sistema de gravidade esférica e usa rigidbody... esse é o script de movimento

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{

    public GameObject Planet;
    public GameObject PlayerPlaceholder;


    public float speed = 4;
    public float JumpHeight = 1.2f;

    float gravity = 100;
    bool OnGround = false;


    float distanceToGround;
    Vector3 Groundnormal;

    public Animator Animations;
    public float AnimationActivation;

    private Rigidbody rb;

    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        rb.freezeRotation = true;
    }

    // Update is called once per frame
    void Update()
    {

        //MOVEMENT

        float x = Input.GetAxis("Horizontal") * Time.deltaTime * speed;
        float z = Input.GetAxis("Vertical") * Time.deltaTime * speed;

        AnimationActivation = Mathf.Abs(x) + Mathf.Abs(z);

        transform.Translate(x, 0, z);

        //Local Rotation

        if (Input.GetKey(KeyCode.E))
        {

            transform.Rotate(0, 150 * Time.deltaTime, 0);
        }
        if (Input.GetKey(KeyCode.Q))
        {

            transform.Rotate(0, -150 * Time.deltaTime, 0);
        }

        //Jump

        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb.AddForce(transform.up * 40000 * JumpHeight * Time.deltaTime);

        }



        //GroundControl

        RaycastHit hit = new RaycastHit();
        if (Physics.Raycast(transform.position, -transform.up, out hit, 10))
        {

            distanceToGround = hit.distance;
            Groundnormal = hit.normal;

            if (distanceToGround <= 0.2f)
            {
                OnGround = true;
            }
            else
            {
                OnGround = false;
            }


        }


        //GRAVITY and ROTATION

        Vector3 gravDirection = (transform.position - Planet.transform.position).normalized;

        if (OnGround == false)
        {
            rb.AddForce(gravDirection * -gravity);

        }

        //

        Quaternion toRotation = Quaternion.FromToRotation(transform.up, Groundnormal) * transform.rotation;
        transform.rotation = toRotation;

        if (AnimationActivation != 0)
        {

            Animations.SetInteger("AnimationState", 1);

        }
        else if (AnimationActivation == 0)
        {

            Animations.SetInteger("AnimationState", 0);

        }

    }


    //CHANGE PLANET

    private void OnTriggerEnter(Collider collision)
    {
        if (collision.transform != Planet.transform)
        {

            Planet = collision.transform.gameObject;

            Vector3 gravDirection = (transform.position - Planet.transform.position).normalized;

            Quaternion toRotation = Quaternion.FromToRotation(transform.up, gravDirection) * transform.rotation;
            transform.rotation = toRotation;

            rb.velocity = Vector3.zero;
            rb.AddForce(gravDirection * gravity);


            PlayerPlaceholder.GetComponent<TutorialPlayerPlaceholder>().NewPlanet(Planet);

        }
    }


}
Precisava muito disso, quem puder ajudar agradeço...


Vê se isso consegue te ajudar: 

 
zuziv
zuziv
Iniciante
Iniciante

Masculino PONTOS : 1663
REPUTAÇÃO : 4
Idade : 16
Áreas de atuação : C#, Python, Mysql, PHP, HTML, CSS, Linux, Segurança da informação.
Respeito as regras : Fazer o personagem apontar na direção do movimento WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Fazer o personagem apontar na direção do movimento

Mensagem por GattiMene Ter 08 Set 2020, 15:41

Mais ou menos... porque nesse script não tem nada que faça o player rotacionar pra direção do movimento...

GattiMene
Membro
Membro

PONTOS : 1053
REPUTAÇÃO : 2
Respeito as regras : Fazer o personagem apontar na direção do movimento WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Fazer o personagem apontar na direção do movimento

Mensagem por MarcosSchultz Qui 10 Set 2020, 02:19

Taaalvez, mas apenas tallvez, esse tutorial ajude:



Mas montando rápidamente a lógica aqui na minha mente, talvez tenha que usar Vector3.Dot pra algumas coisas ai no meio.
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 63524
REPUTAÇÃO : 2576
Idade : 24
Áreas de atuação : Administrador do fórum
Respeito as regras : Fazer o personagem apontar na direção do movimento Aad8pUi

https://www.schultzgames.com

Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum