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:
Jogo Mobile - Ultimate Flight Simulator - Real World SDK
Unity - FPS e CPU ???
Usar microfone na Unity
Jogo ficando escuro quando faço a Build pela cena menu
Dúvida sobre movimentação do personagem
[RESOLVIDO] ACESSAR SCRIPT DE OUTRO GAMEOBJECT
Para eu ter shader em meu projeto eu tenho que usar o hdrp ou o 3d padrao?
Rotate Camera Mobile
Sou modelador 3d (!!! Arquitetonico!!!) Disponivel !!!!!!
Preciso de alguém que saiba programação e Raycast
Servidor/cliente usando sockets
Assets carregados com addressables causando erro na versão "buildada"
Jogo multiplayer com salas - não vai para o lobby
Texto - Não escreve no 'play'. Clica mais não digita.
Error Unity Vulkan - Out of memory! (allocating memory for image)
Câmera Não esta renderizando na segunda janela.
Movimento da Câmera No Android
[RESOLVIDO] - Unity não está mais funcionando o "Build and Run"
Precisa de modelador com ou sem experiência
Duvida com "mesclagem" de animação
[TUTORIAL] Como fazer uma gota de água na Unity
Missoes Aparecerem aleatoriamente do nada
Dúvida pafra IOS
botoes não esta funcionando corretamente nem a fisica?
Duvida com NavMeshAgent
COMO AUMENTAR E DIMINUÍ A SENSIBILIDADE DO TOQUE POR CÓDICO (MOBILE)
A Licença da Unity só funciona se eu tiver Internet
Problema com OnTriggerEnter
Transparência ao colidir
bool para evitar de salvar frames repetido
Unity - Transições no AnimatorController rodando errado
problemas com "wall Jump" , atribuir força ao eixo X
Meu Jogo ja Esta Pronto! EXPERIMENTEM!!
JOSTICK NAO SE MOVE
botoes para mobile
ERRO NO SCRIPT FOME E SEDE ETC
CORTAR ARVORES E DROPAR
Configurar sistema
Unity - Sugestões da Loja
Standard Assets para UNITY 5 em ".unitypackage"
Problema com o Shader
[TUTORIAL] Sistema Simples de Falas
Velocímetro Bugado
Como faço para alinhar uma textura na posição absoluta do mundo no shader
Sobre o Tutorial de Cortar Arvores
Erro Mov Player
[TUTORIAL] VELOCIMETRO DE PONTEIRO
[TUTORIAL] Ligar/Desligar luz por Interruptor
Sistema de lampadas
Conversor de movimento do Unity para o MMD [Ajuda]
Script de configurações não esta funcionando corretamente
CAMERA BUGANDO NA TRANSIÇÃO DE CENA
Volante girando errado [AJUDA]
Novo Asset Sistema de Portas e Chaves
ERRO NAS RODAS DO CARRO
[TUTORIAL] Sistema de câmera em primeira pessoa SIMPLES
AJUDA PARA UM SISTEMA DE CHECKPOINT
Jogo offline com Loja?
Unity -TextMeshProUGUI- 1 das coisas q estão deixando a scene lenta p abrir
Detectar quando o animation curve chega no final
Problema com compilação para Android na Unity 2019.4.35
Aplicativo para IOS
Árvores feitas na Unity
RECRUTAMENTO WAR CORE FPS
[RESOLVIDO] Unity - Scrollbar não funciona
[TUTORIAL] AI que cria scripts para você, inclusive scripts para Unity !!!!
[RESOLVIDO] Animando Image na Unity não funciona
Hospedar um jogo multiplay na itch.io
Script para detetectar o movimento do player
Alguém ajuda com um erro por favor? PSDImporter.cs
[RESOLVIDO] - Unity - Rotação da Câmera - Mathf.Clamp não funciona
Alterar textura .unity3d
Comportamento do movimento do inimigo. Sair do caminho e Fugir
Procuro uma equipe
Ajuda Com Sala de Jogo Multiplayer
COMO FAZER A PORTA ABRIR SÓ EMPURRANDO ELA COM O PLAYER?
Visual Studio - Vend os Scripts na Aba "Modo de Exibição de Classe" soltos
app fica fechendo após mobile notification
[RESOLVIDO] Controlar dois player dentro de um jogo multiplay usando mirror
Unity - O Jogo fecha quando vai abrir a Scene
[TUTORIAL] Mudando material
Procuro programador Unity para jogo 2D
AJUDA REALISTIC CAR CONTROLLER
Chama para isqueiro
[RESOLVIDO] Ajuda para destruir objeto
Unity - Sistema de Giro da Tela - Ajuda pfv!
Unity - Touch na Tela do Celular
Dawn Of Hell - Horror Game BR (2022-2023)
Unity - Jogo online ou offline?
ANIMAÇÃO INIMIGO ESTÁ INDO PRA TUDO QUANTO É LADO
[RESOLVIDO] Erro de Script no Android
Bundle Assets, Resources, e Addressables
Jogo online (qual a melhor opção?)
Dúvida sobre como criar o inimigo IA!
Unity dando pause no jogo a cada 4 segundos
bom dia amigos eu sou meio lego nos scripts será que alguem pode me ajudar
JOGO "CHALLENGE" FINALIZADO E DISPONÍVEL PARA BAIXAR.
error CS0246
[TUTORIAL]Como Chamar Um Método Usando Uma String como Parametro
Ontem à(s) 2:41 pm
Ter maio 30, 2023 7:28 pm
Ter maio 30, 2023 6:04 am
Seg maio 29, 2023 7:53 pm
Sáb maio 27, 2023 3:11 pm
Sex maio 26, 2023 4:59 pm
Sex maio 26, 2023 11:27 am
Qui maio 25, 2023 10:33 am
Sáb maio 20, 2023 12:25 pm
Ter maio 16, 2023 5:43 pm
Ter maio 16, 2023 5:42 pm
Ter maio 09, 2023 7:42 pm
Seg maio 08, 2023 7:13 am
Seg maio 08, 2023 6:38 am
Seg maio 08, 2023 1:49 am
Sáb maio 06, 2023 11:44 pm
Sáb maio 06, 2023 6:42 pm
Sáb maio 06, 2023 1:35 am
Qua maio 03, 2023 12:32 pm
Seg maio 01, 2023 8:51 pm
Seg maio 01, 2023 12:29 pm
Dom Abr 30, 2023 8:49 pm
Dom Abr 30, 2023 5:06 pm
Sáb Abr 29, 2023 4:05 pm
Qui Abr 27, 2023 4:39 pm
Qui Abr 27, 2023 12:40 am
Ter Abr 25, 2023 5:33 pm
Ter Abr 25, 2023 10:23 am
Dom Abr 23, 2023 12:11 am
Sáb Abr 22, 2023 4:27 am
Sex Abr 21, 2023 11:38 pm
Sex Abr 21, 2023 10:21 pm
Qui Abr 20, 2023 4:57 pm
Qui Abr 20, 2023 12:28 pm
Qua Abr 19, 2023 3:03 pm
Qua Abr 19, 2023 1:52 pm
Qua Abr 19, 2023 11:59 am
Qua Abr 19, 2023 11:54 am
Sáb Abr 15, 2023 8:13 pm
Sex Abr 14, 2023 7:43 am
Qui Abr 13, 2023 4:36 pm
Qui Abr 13, 2023 4:36 pm
Qua Abr 12, 2023 6:05 pm
Ter Abr 11, 2023 6:22 pm
Seg Abr 10, 2023 7:33 pm
Seg Abr 10, 2023 3:25 pm
Dom Abr 09, 2023 8:53 pm
Dom Abr 09, 2023 7:26 pm
Dom Abr 09, 2023 5:59 pm
Dom Abr 09, 2023 12:06 am
Sex Abr 07, 2023 7:24 pm
Qui Abr 06, 2023 6:45 am
Qua Abr 05, 2023 9:24 am
Ter Abr 04, 2023 4:55 pm
Ter Abr 04, 2023 1:00 pm
Dom Abr 02, 2023 11:52 pm
Sex Mar 31, 2023 12:50 pm
Sex Mar 31, 2023 11:03 am
Sex Mar 31, 2023 10:05 am
Qua Mar 29, 2023 7:48 pm
Ter Mar 28, 2023 10:50 pm
Ter Mar 28, 2023 9:19 am
Seg Mar 27, 2023 10:16 am
Dom Mar 26, 2023 7:39 pm
Qui Mar 23, 2023 4:52 pm
Ter Mar 21, 2023 11:20 pm
Ter Mar 21, 2023 8:52 pm
Sáb Mar 18, 2023 8:41 pm
Sex Mar 17, 2023 3:12 pm
Sex Mar 17, 2023 1:24 pm
Seg Mar 13, 2023 10:45 pm
Seg Mar 13, 2023 9:48 pm
Seg Mar 13, 2023 8:24 pm
Seg Mar 13, 2023 7:17 pm
Dom Mar 12, 2023 10:27 pm
Dom Mar 12, 2023 7:22 pm
Sex Mar 10, 2023 8:26 pm
Sex Mar 10, 2023 8:00 pm
Qui Mar 09, 2023 9:05 am
Ter Mar 07, 2023 2:27 pm
Sex Mar 03, 2023 6:47 pm
Sex Mar 03, 2023 12:01 am
Qui Mar 02, 2023 4:00 pm
Qui Mar 02, 2023 1:35 pm
Qua Mar 01, 2023 5:47 pm
Qua Mar 01, 2023 2:11 am
Seg Fev 27, 2023 11:08 pm
Seg Fev 27, 2023 7:19 pm
Dom Fev 26, 2023 11:49 pm
Dom Fev 26, 2023 8:29 pm
Dom Fev 26, 2023 7:47 pm
Dom Fev 26, 2023 7:46 pm
Dom Fev 26, 2023 6:08 pm
Sáb Fev 25, 2023 8:16 pm
Seg Fev 13, 2023 7:02 pm
Seg Fev 13, 2023 2:44 am
Dom Fev 12, 2023 9:57 pm
Dom Fev 12, 2023 2:19 pm
Sáb Fev 11, 2023 1:01 pm



































































































Character Controller Slide

5 participantes

Ir para baixo

DÚVIDA Character Controller Slide

Mensagem por thiagomaace Sex Abr 15, 2022 2:23 pm

boa tarde... alguem poderia me dar uma ajuda, eu n estou conseguindo implementar no meu codigo de movimento com character controller um sistema de escorregar caso o player esteja em um terreno muito inclinado ou na beirada de alguma superfici.

thiagomaace
Iniciante
Iniciante

PONTOS : 421
REPUTAÇÃO : 1
Respeito as regras : Character Controller Slide  WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: Character Controller Slide

Mensagem por Magnatah Sáb Abr 30, 2022 7:26 pm

thiagomaace escreveu:boa tarde... alguem poderia me dar uma ajuda, eu n estou conseguindo implementar no meu codigo de movimento com character controller um sistema de escorregar caso o player esteja em um terreno muito inclinado ou na beirada de alguma superfici.

Mostre o trecho do codigo que esta com problema.


Última edição por Magnatah em Sáb maio 14, 2022 8:22 pm, editado 1 vez(es)
Magnatah
Magnatah
Instrutor

Masculino PONTOS : 2915
REPUTAÇÃO : 191
Idade : 27
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras : Character Controller Slide  Aad8pUi

https://www.instagram.com/ampercygames/

Ir para o topo Ir para baixo

DÚVIDA Re: Character Controller Slide

Mensagem por thiagomaace Sáb maio 14, 2022 7:37 pm

Magnatah escreveu:
thiagomaace escreveu:boa tarde... alguem poderia me dar uma ajuda, eu n estou conseguindo implementar no meu codigo de movimento com character controller um sistema de escorregar caso o player esteja em um terreno muito inclinado ou na beirada de alguma superfici.

Mostre o trecho do codigo que esta com problema, caso ainda não tenha feito podemos criar uma solução
boa noite.... então, eu n tenho um codigo, ja tentei de varias formas pensar em como fazer ele escorregar usando characterController, mas n tenho conhecimento pra isso ainda, eu precisava de alguem que pudesse me ensinar a como fazer algo assim. eu so tenho um codigo de movimentacão normal.
Código:
    void NormalMoviment()
    {
        InputX = Input.GetAxis("Horizontal");
        InputZ = Input.GetAxis("Vertical");
        Vector3 Direcao = new Vector3(InputX, 0, InputZ);
        if (InputX != 0 || InputZ != 0 )
        {          
            var camrot = MaiCamera.transform.rotation;
            camrot.x = 0;
            camrot.z = 0;
            transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(Direcao) * camrot, speedMove * Time.deltaTime);
            Vector3 rotatedMovement = Quaternion.Euler(0, MaiCamera.transform.rotation.eulerAngles.y, 0) * Direcao;
            MyController.Move(rotatedMovement * speedMove * Time.deltaTime);
        }
    }

thiagomaace
Iniciante
Iniciante

PONTOS : 421
REPUTAÇÃO : 1
Respeito as regras : Character Controller Slide  WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: Character Controller Slide

Mensagem por Magnatah Sáb maio 14, 2022 7:47 pm

Se Precisa de Conhecimento em programação e na Unity, Recomendo esses Cursos:  (são gratuitos)

Curso de Algoritmos:  https://www.youtube.com/watch?v=8mei6uVttho&list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV&ab_channel=CursoemV%C3%ADdeo   (Gustavo Guanabara)

Curso de C# e Unity:  https://www.youtube.com/watch?v=FPBoOnan298&list=PL0TaCOFAHoO-Wpq6FuN9gwr7WAdPEKUnh&ab_channel=MarcosSchultz   (Marcos Schultz)

Algoritmos é a base de todas as linguagens de programação.

Laughing
Magnatah
Magnatah
Instrutor

Masculino PONTOS : 2915
REPUTAÇÃO : 191
Idade : 27
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras : Character Controller Slide  Aad8pUi

https://www.instagram.com/ampercygames/

Ir para o topo Ir para baixo

DÚVIDA Re: Character Controller Slide

Mensagem por MarcosSchultz Sáb maio 14, 2022 10:38 pm

Então, você já pensou em diminuir o atrito do PhysicMaterial que o seu player está usando? Talvez dê para resolver isso sem programação...
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 64431
REPUTAÇÃO : 2643
Idade : 26
Áreas de atuação : Administrador do fórum
Respeito as regras : Character Controller Slide  Aad8pUi

https://www.schultzgames.com

Ir para o topo Ir para baixo

DÚVIDA Re: Character Controller Slide

Mensagem por Rangel Oblivion Dom maio 15, 2022 10:37 am

Eu estou numa situação parecida, eu uso o FPSController que veio com a Unity, ele não tem física de escorregar (eu acho). No meu jogo eu tive que fazer umas gambiarras para resolver certos problemas como: impedir que o personagem pudesse caminhar sobre paredes muito estreitas sem cair, para isso usei um objeto invisível para derrubá-lo dando a impressão de que o personagem se desequilibrou e caiu. Usei um box collider numa piramide para evitar que o jogador pudesse subir pulando (solução ruim). Sobre a física dos materiais, eu já testei colocar zero friction para fazer o personagem escorregar, mas não teve efeito sobre o FPSController.
Rangel Oblivion
Rangel Oblivion
MembroAvançado

Masculino PONTOS : 2097
REPUTAÇÃO : 53
Idade : 32
Áreas de atuação : Tradução
Respeito as regras : Character Controller Slide  WvDYdlf

http://rangeloblivion.blogspot.com/

Ir para o topo Ir para baixo

DÚVIDA Re: Character Controller Slide

Mensagem por dutrabr100 Sex maio 20, 2022 1:59 pm

acho que tu pode usar a normal da superfície para isso.

[Cometi um erro na lógica aqui favor ignorar esse comentário eu excluiria, mas não acho onde]


Última edição por dutrabr100 em Sex maio 20, 2022 11:34 pm, editado 1 vez(es)
dutrabr100
dutrabr100
ProgramadorMaster

Masculino PONTOS : 1431
REPUTAÇÃO : 104
Idade : 25
Áreas de atuação : -Formado Em Analise e Desenvolvimento De Sistemas
-Unity e Blender

Respeito as regras : Character Controller Slide  Aad8pUi

https://games-printer.blogspot.com/

Ir para o topo Ir para baixo

DÚVIDA Re: Character Controller Slide

Mensagem por Rangel Oblivion Sex maio 20, 2022 8:09 pm



Tente seguir esse tutorial, eu não pude usar no meu script por ele ser diferente e eu não consegui inserir os comandos (sou noob demais em C#).
Rangel Oblivion
Rangel Oblivion
MembroAvançado

Masculino PONTOS : 2097
REPUTAÇÃO : 53
Idade : 32
Áreas de atuação : Tradução
Respeito as regras : Character Controller Slide  WvDYdlf

http://rangeloblivion.blogspot.com/

Ir para o topo Ir para baixo

DÚVIDA Re: Character Controller Slide

Mensagem por Rangel Oblivion Sex maio 20, 2022 10:55 pm

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

public class Slide : MonoBehaviour
{
    Rigidbody rig;
   CapsuleCollider capsuleCollider;
    float originalHeight;
    public float reduceHeight;
   public float slideSpeed = 10f;
   bool isSliding;


    void Start()
    {
      capsuleCollider = GetComponent<CapsuleCollider>();
      rig = GetComponent<Rigidbody>();
      originalHeight = capsuleCollider.height;
    }

 
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.LeftControl) && Input.GetKey(KeyCode.Space))
         Sliding();
      else if (Input.GetKeyUp(KeyCode.LeftControl))
         GoUp();
    }
   private void Sliding()
   {
      capsuleCollider.height = reduceHeight;
      rig.AddForce(-1 * slideSpeed * transform.forward, ForceMode.VelocityChange);
      
   }
   
   private void GoUp()
   {
      capsuleCollider.height = originalHeight;
   }
}



Tentei seguir esse tutorial, mas não funcionou para mim, devo ter feito algo de errado.
Rangel Oblivion
Rangel Oblivion
MembroAvançado

Masculino PONTOS : 2097
REPUTAÇÃO : 53
Idade : 32
Áreas de atuação : Tradução
Respeito as regras : Character Controller Slide  WvDYdlf

http://rangeloblivion.blogspot.com/

Ir para o topo Ir para baixo

DÚVIDA Re: Character Controller Slide

Mensagem por Rangel Oblivion Dom maio 22, 2022 1:27 pm

Creio que encontrei a solução.

https://answers.unity.com/questions/1358491/character-controller-slide-down-slope.html

Abaixo está o meu script já modificado caso alguém queira usar, aviso que esse script tem um sistema de escada que o original da Unity não tinha.

Código:
/*
FPSController.cs ver. 3.6.16 - Standard FPSController modifed by ThunderWire Games
*/

using System;
using UnityEngine;
using UnityEditor;
using UnityStandardAssets.CrossPlatformInput;
using UnityStandardAssets.Utility;
using Random = UnityEngine.Random;

namespace UnityStandardAssets.Characters.FirstPerson
{
    [RequireComponent(typeof (CharacterController))]
    [RequireComponent(typeof (AudioSource))]
    public class FPSController : MonoBehaviour
    {
        [SerializeField] private bool m_IsWalking;
      
      [Space(5)]
        [SerializeField] public float m_WalkSpeed = 5.0f;
        [SerializeField] public float m_RunSpeed  = 10.0f;
      [SerializeField] private float climbSpeed = 3.0f;
      [SerializeField] private float climbRate = 0.5f;
      private float climbDownThreshold = -0.4f;
        [SerializeField] [Range(0f, 1f)] private float m_RunstepLenghten = 0.7f;
        [SerializeField] private float m_JumpSpeed = 10.0f;
        [SerializeField] private float m_StickToGroundForce = 10.0f;
        [SerializeField] private float m_GravityMultiplier = 2.0f;
      
      [Space(5)]
        [SerializeField] private MouseLook m_MouseLook;
        [SerializeField] private bool m_UseFovKick = true;
        [SerializeField] private FOVKick m_FovKick = new FOVKick();
      
      [Space(5)]
        [SerializeField] private bool m_UseHeadBob = true;
        [SerializeField] private CurveControlledBob m_HeadBob = new CurveControlledBob();
        [SerializeField] private LerpControlledBob m_JumpBob = new LerpControlledBob();
      
      [Space(5)]
        [SerializeField] private float m_StepInterval = 5.0f;
        [SerializeField] public AudioClip[] m_FootstepSounds;    // an array of footstep sounds that will be randomly selected from.
      [SerializeField] private AudioClip[] m_LadderSounds;
        [SerializeField] private AudioClip m_JumpSound;          // the sound played when character leaves the ground.
        [SerializeField] private AudioClip m_LandSound;          // the sound played when character touches back on ground.

      /* LADDER */
      private bool m_onLadder = false;      
      private bool useLadder = true;
        private bool isGrounded; // is on a slope or not
        public float slideFriction = 0.3f; // ajusting the friction of the slope
        private Vector3 hitNormal; //orientation of the slope.

        private Vector3 climbDirection = Vector3.up;
      private Vector3 lateralMove = Vector3.zero;
      private Vector3 ladderMovement = Vector3.zero;
      private Rigidbody rigidbody;
      private CharacterController ChController;
      private FPSController Controller;   
      private GameObject LadderObject;   
      private float CamRot;
      private float playTime = 0.0f;
      
      
        private Camera m_Camera;
        private bool m_Jump;
        private float m_YRotation;
        private Vector2 m_Input;
        private Vector3 m_MoveDir = Vector3.zero;
        private CharacterController m_CharacterController;
        private CollisionFlags m_CollisionFlags;
        private bool m_PreviouslyGrounded;
        private Vector3 m_OriginalCameraPosition;
        private float m_StepCycle;
        private float m_NextStep;
        private bool m_Jumping;
        private AudioSource m_AudioSource;
      
        // Use this for initialization
        private void Start()
        {
            m_CharacterController = GetComponent<CharacterController>();
            m_Camera = Camera.main;
            m_OriginalCameraPosition = m_Camera.transform.localPosition;
            m_FovKick.Setup(m_Camera);
            m_HeadBob.Setup(m_Camera, m_StepInterval);
            m_StepCycle = 0f;
            m_NextStep = m_StepCycle/2f;
            m_Jumping = false;
            m_AudioSource = GetComponent<AudioSource>();
         m_MouseLook.Init(transform , m_Camera.transform);
         rigidbody = this.GetComponent<Rigidbody>();
         m_onLadder = false;
         useLadder = true;
        }


        // Update is called once per frame
        private void Update()
        {
            RotateView();
            // the jump state needs to read here to make sure it is not missed
            if (!m_Jump && !m_onLadder)
            {
                m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
            }

            if (!m_PreviouslyGrounded && m_CharacterController.isGrounded && !m_onLadder)
            {
                StartCoroutine(m_JumpBob.DoBobCycle());
                PlayLandingSound();
                m_MoveDir.y = 0f;
                m_Jumping = false;
            }
            if (!m_CharacterController.isGrounded && !m_Jumping && m_PreviouslyGrounded)
            {
                m_MoveDir.y = 0f;
            }

            m_PreviouslyGrounded = m_CharacterController.isGrounded;
         
         if(m_onLadder)
         {
                StopAllCoroutines();
                StartCoroutine(!m_IsWalking ? m_FovKick.FOVKickUp() : m_FovKick.FOVKickDown());
            rigidbody.useGravity = false;
            rigidbody.isKinematic = true;      
            LadderUpdate();
         }else{
            LadderObject = null;
            rigidbody.useGravity = true;
            rigidbody.isKinematic = true;
         }
        }


        private void PlayLandingSound()
        {
            m_AudioSource.clip = m_LandSound;
            m_AudioSource.Play();
            m_NextStep = m_StepCycle + .5f;
        }


        private void FixedUpdate()
        {
         float speed;
         GetInput(out speed);
         if(!m_onLadder)
         {
            
                // always move along the camera forward as it is the direction that it being aimed at
            Vector3 desiredMove = transform.forward*m_Input.y + transform.right*m_Input.x;
                isGrounded = Vector3.Angle(Vector3.up, hitNormal) <= m_CharacterController.slopeLimit;
             
                // get a normal for the surface that is being touched to move along it
                RaycastHit hitInfo;
            Physics.SphereCast(transform.position, m_CharacterController.radius, Vector3.down, out hitInfo,
                          m_CharacterController.height/2f);
            desiredMove = Vector3.ProjectOnPlane(desiredMove, hitInfo.normal).normalized;

            m_MoveDir.x = desiredMove.x*speed;
            m_MoveDir.z = desiredMove.z*speed;
                if (!isGrounded)
                {
                    m_MoveDir.x += (1f - hitNormal.y) * hitNormal.x * (speed - slideFriction);
                    m_MoveDir.z += (1f - hitNormal.y) * hitNormal.z * (speed - slideFriction);
                }

                if (m_CharacterController.isGrounded)
            {
               m_MoveDir.y = -m_StickToGroundForce;

               if (m_Jump)
               {
                  m_MoveDir.y = m_JumpSpeed;
                  PlayJumpSound();
                  m_Jump = false;
                  m_Jumping = true;
               }
            }
            else
            {
               m_MoveDir += Physics.gravity*m_GravityMultiplier*Time.fixedDeltaTime;
            }
            m_CollisionFlags = m_CharacterController.Move(m_MoveDir*Time.fixedDeltaTime);
            
            ProgressStepCycle(speed);
         }
            UpdateCameraPosition(speed);
        }



        private void PlayJumpSound()
        {
            m_AudioSource.clip = m_JumpSound;
            m_AudioSource.Play();
        }


        private void ProgressStepCycle(float speed)
        {
            if (m_CharacterController.velocity.sqrMagnitude > 0 && (m_Input.x != 0 || m_Input.y != 0))
            {
                m_StepCycle += (m_CharacterController.velocity.magnitude + (speed*(m_IsWalking ? 1f : m_RunstepLenghten)))*
                            Time.fixedDeltaTime;
            }

            if (!(m_StepCycle > m_NextStep))
            {
                return;
            }

            m_NextStep = m_StepCycle + m_StepInterval;

            PlayFootStepAudio();
        }


        private void PlayFootStepAudio()
        {
            if (!m_CharacterController.isGrounded)
            {
                return;
            }
         // pick & play a random footstep sound from the array,
         int n = Random.Range(0, m_FootstepSounds.Length);
         m_AudioSource.clip = m_FootstepSounds[n];
         m_AudioSource.PlayOneShot(m_AudioSource.clip);
         // move picked sound to index 0 so it's not picked next time
         m_FootstepSounds[n] = m_FootstepSounds[0];
         m_FootstepSounds[0] = m_AudioSource.clip;         
        }


        private void UpdateCameraPosition(float speed)
        {
            Vector3 newCameraPosition;
            if (!m_UseHeadBob)
            {
                return;
            }
            if (m_CharacterController.velocity.magnitude > 0 && m_CharacterController.isGrounded)
            {
                m_Camera.transform.localPosition =
                    m_HeadBob.DoHeadBob(m_CharacterController.velocity.magnitude +
                                      (speed*(m_IsWalking ? 1f : m_RunstepLenghten)));
                newCameraPosition = m_Camera.transform.localPosition;
                newCameraPosition.y = m_Camera.transform.localPosition.y - m_JumpBob.Offset();
            }
            else
            {
                newCameraPosition = m_Camera.transform.localPosition;
                newCameraPosition.y = m_OriginalCameraPosition.y - m_JumpBob.Offset();
            }
            m_Camera.transform.localPosition = newCameraPosition;
        }


        private void GetInput(out float speed)
        {
            // Read input
            float horizontal = CrossPlatformInputManager.GetAxis("Horizontal");
            float vertical = CrossPlatformInputManager.GetAxis("Vertical");

            bool waswalking = m_IsWalking;

#if !MOBILE_INPUT
            // On standalone builds, walk/run speed is modified by a key press.
            // keep track of whether or not the character is walking or running
            m_IsWalking = !Input.GetKey(KeyCode.LeftShift);
#endif
            // set the desired speed to be walking or running
            speed = m_IsWalking ? m_WalkSpeed : m_RunSpeed;
            m_Input = new Vector2(horizontal, vertical);

            // normalize input if it exceeds 1 in combined length:
            if (m_Input.sqrMagnitude > 1)
            {
                m_Input.Normalize();
            }

            // handle speed change to give an fov kick
            // only if the player is going to a run, is running and the fovkick is to be used
            if (m_IsWalking != waswalking && m_UseFovKick && m_CharacterController.velocity.sqrMagnitude > 0)
            {
                StopAllCoroutines();
                StartCoroutine(!m_IsWalking ? m_FovKick.FOVKickUp() : m_FovKick.FOVKickDown());
            }
        }


        private void RotateView()
        {
            m_MouseLook.LookRotation (transform, m_Camera.transform);
        }


        private void OnControllerColliderHit(ControllerColliderHit hit)
        {
            Rigidbody body = hit.collider.attachedRigidbody;
            hitNormal = hit.normal;
            //dont move the rigidbody if the character is on top of it
            if (m_CollisionFlags == CollisionFlags.Below)
            {
                return;
            }

            if (body == null || body.isKinematic)
            {
                return;
            }
            body.AddForceAtPosition(m_CharacterController.velocity*0.1f, hit.point, ForceMode.Impulse);
        }
      
      //When on Ladder Trigger
      private void OnTriggerStay(Collider ladder){
         if(ladder.tag == "Ladder" && useLadder)
         {
            LadderObject = ladder.gameObject;
            m_onLadder = true;
         }
      }
      
      //Ladder Trigger Exit
      private void OnTriggerExit(Collider ladder){
         if(ladder.tag == "Ladder")
         {
            m_onLadder = false;
            useLadder = true;
         }
      }
      
      //Ladder Movement
      private void LadderUpdate () {
         CamRot = m_Camera.transform.forward.y;
         if(m_onLadder)
         {
            Vector3 verticalMove;
            verticalMove = climbDirection.normalized;
            verticalMove *= Input.GetAxis("Vertical");
            verticalMove *= (CamRot > climbDownThreshold) ? 1 : -1;
            lateralMove = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            lateralMove = transform.TransformDirection(lateralMove);
            ladderMovement = verticalMove + lateralMove;
            m_CharacterController.Move(ladderMovement * climbSpeed * Time.deltaTime);
         
            if(Input.GetAxis("Vertical") == 1 && !(m_AudioSource.isPlaying) && Time.time >= playTime)
            {
               PlayLadderSound();
            }
         
            if(Input.GetKey(KeyCode.Space)) {
               useLadder = false;
               m_onLadder = false;
               LadderObject = null;
            }
         }
      }
      
      //Ladder Footsteps
      void PlayLadderSound()
      {
         int r = Random.Range(0, m_LadderSounds.Length);
         m_AudioSource.clip = m_LadderSounds[r];
         m_AudioSource.PlayOneShot(m_AudioSource.clip);
         playTime = Time.time + climbRate;
      }
    }
}
Rangel Oblivion
Rangel Oblivion
MembroAvançado

Masculino PONTOS : 2097
REPUTAÇÃO : 53
Idade : 32
Áreas de atuação : Tradução
Respeito as regras : Character Controller Slide  WvDYdlf

http://rangeloblivion.blogspot.com/

Ir para o topo Ir para baixo

DÚVIDA Re: Character Controller Slide

Mensagem por Rangel Oblivion Dom maio 22, 2022 1:43 pm

Um problema que notei foi o seguinte: se você deixar o valor de SlideFriction em 0.3 o FPSController ainda consegue (com dificuldade) subir pulando uma superfície inclinada, se você colocar -5 o FPSController não consegue subir de jeito nenhum, porém ao passar por cima de objetos de formas irregulares (escombros) o FPSController ficar meio bugado escorregando insanamente. Ainda vou tentar achar uma solução para isso, mas de qualquer forma já é um grande avanço ter essa mecânica de escorregar.
Rangel Oblivion
Rangel Oblivion
MembroAvançado

Masculino PONTOS : 2097
REPUTAÇÃO : 53
Idade : 32
Áreas de atuação : Tradução
Respeito as regras : Character Controller Slide  WvDYdlf

http://rangeloblivion.blogspot.com/

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos