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 Very Happy
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Unity Microfone
[ME AJUDA] O player não se movimenta...
Home Simulator 2017 (Estilo The Sims em 1ª Pessoa) (Download Grátis)
OBJETO GIRAR QUANDO ARRASTAR O MOUSE
Movimentaçao player
MUDAR FLOAT NO FIM DE UMA ANIMAÇÃO
SITE MODELOS 3D PARA USO COMERCIAL
RagDoll + Download Free -- feito por um gringo
Instanciar objetos aonde mira
[DUVIDA] "encostar" em um GameObject e Tomar Dano
[TUTORIAL] Criar Analógico Virtual UI Para Mobile.
[AJUDA] Cronometro
disolver/ desintegrar um objeto
COMO POSSO FAZER O INIMIGO MORRER COM TIRO?
Fazer objeto preview andar de gridsize em gridsize
[PEDIDO] Designers ou Entendedores (Capa,Menu e ToolTip) 3 Imagens
[RESOLVIDO] Publicando Apk Parte 2
[TUTORIAL] IA Simples
Ajustar o Brilho do LensFlare de Acordo com a Distância
CONTROLE ARCADE PARA JOGO DE CORRIDA
[TUTORIAL] IA Simples Parte 2 (Atirar)
[DEMO] Survival Block
Aprimoramento IA Inimiga
Batalha de Canhão
[RESOLVIDO] Camera Collider
Todos os inimigos morrem
[____TÓPICO LIVRE____] FALE O QUE QUISER
Canal de tutoriais android
Area Para modeladores
Inimigo ao seguir flutua [ajuda]
Chamar Metodo
Gerador de códigos
[TUTORIAL] Sistema de tiro com RAYCAST (várias armas, mira laser, munição, dano, etc, etc)
Duvida sobre patrulha aleatória
Demo de jogo para testarem...
Criação de uma mensagem notificação em objeto 3d no unity
[TUTORIAL] Fazer um VOLANTE com UI, para Android
[DUVIDA] Como destruir um GameObject (cubo etc...) sem destruir seus "afilhados"
[Duvida] Como fazer uma luz se desativar ao ficar longe dela
[TUTORIAL] Inteligência artificial, inimigo e AIPoints
GRAFICO BUGADO [MOBILE]
Duvida sobre array de gameobject
ERRO NO APK
ANIMAÇÃO
sincronizar um Variável String multiplayer
DUVIDAS VARIADAS
Publicando Apk na PlayStore
Curar vida ao coletar itens
(Dúvida) Rotacionar roda
Sistema de tráfego
ObjetoCair
Existe alguma forma de fazer multiplayer por lan ou por bluethooth?
Duvida Script
converter para C#
Animação de movimento
Modelos 3D para uso gratuito ou comercial
Ajuda com jogos em flash
[RESOLVIDO] Dano No Player Ajuda erro
Como fazer parar de seguir em uma distancia determinada
Meus modelos 3D em fase de experimento
Game Resistência
Lampião Vs Zombies - FORMAÇÃO DE EQUIPE - Jogo 2D
Criando Inteligencia Artificial Para BOSS.
Problema Com Menu Inicial !!
Tutorial rpg?
Criar um objeto preso em apenas um lado
Inventario equipando roupas - Leia mas para saber
Animação não esta ativando na hora do pulo
COMO POSSO FAZER UM MULTIPLAYER?
Menu principal não funciona no mobile
tenho que alterar os scripts para transfomar um game para Android????
Movimentação, sem Rigidbody
dash estilo megaman x, suavizar
[TUTORIAL] Mensagem aparecer na tela conforme a distância do jogador (Unity 5)
Como criar um sistema d interação cm objetos atraves do raycasthit?
RESOLVIDO Script de ligar/desligar lanterna Unity 5 Ultima Versao
Script para recarregar cena
como chamar void do objeto em que o RayCast bateu?
modificar a agua (Tsunami e outros)
bolleana [mobile]
Nav Mesh em mapa Aleatorio
Animar meu personagem (pedido)
drop Down Converter Texto Para imagem
Criar uma animação antes de começar a fase
CONTROLE DE UM CARRO PARA MOBILE
Criar chat para Android
[TUTORIAL] Ligar e Desligar Lanterna
QUERO CRIAR UM SCRIPT PARA UM SIMULADOR DE CARRO
MUDANÇA DE SCENA
Ia inimiga pequeno erro
[Meu Jogo [Aircraft- Space Guardian]] Testem porfavor !
Duvida sobre movimentação
Dúvida: Movimentação de Personagem 2D
Como permanecer mirando?
chamar animação [mobile]
Tutorial de RTS
JOGO DE PETECA(JOGAR UMA BOLINHA NA OUTRA)
[Pedido] Link de uma versão do sdk que funcione ;-;
Meu personagem na Realidade Aumentada fica tremendo
Hoje à(s) 10:57 pm
Hoje à(s) 10:45 pm
Hoje à(s) 10:13 pm
Hoje à(s) 8:30 pm
Hoje à(s) 7:37 pm
Hoje à(s) 6:55 pm
Hoje à(s) 6:42 pm
Hoje à(s) 4:50 pm
Hoje à(s) 4:46 pm
Hoje à(s) 4:42 pm
Hoje à(s) 4:38 pm
Hoje à(s) 4:33 pm
Hoje à(s) 2:39 pm
Hoje à(s) 1:33 pm
Hoje à(s) 1:19 pm
Hoje à(s) 12:46 pm
Hoje à(s) 8:56 am
Ontem à(s) 7:47 pm
Ontem à(s) 7:38 pm
Ontem à(s) 7:30 pm
Ontem à(s) 3:28 pm
Ter Mar 21, 2017 11:50 pm
Ter Mar 21, 2017 10:14 pm
Ter Mar 21, 2017 7:22 pm
Ter Mar 21, 2017 6:08 pm
Ter Mar 21, 2017 5:00 pm
Ter Mar 21, 2017 4:43 pm
Ter Mar 21, 2017 3:22 pm
Ter Mar 21, 2017 3:08 pm
Ter Mar 21, 2017 2:13 pm
Ter Mar 21, 2017 12:58 pm
Ter Mar 21, 2017 11:47 am
Ter Mar 21, 2017 10:53 am
Ter Mar 21, 2017 10:41 am
Ter Mar 21, 2017 10:13 am
Ter Mar 21, 2017 7:26 am
Ter Mar 21, 2017 12:26 am
Ter Mar 21, 2017 12:10 am
Ter Mar 21, 2017 12:09 am
Ter Mar 21, 2017 12:05 am
Ter Mar 21, 2017 12:02 am
Seg Mar 20, 2017 11:58 pm
Seg Mar 20, 2017 11:55 pm
Seg Mar 20, 2017 9:10 pm
Seg Mar 20, 2017 7:57 pm
Seg Mar 20, 2017 6:41 pm
Seg Mar 20, 2017 4:31 pm
Seg Mar 20, 2017 8:10 am
Dom Mar 19, 2017 11:32 pm
Dom Mar 19, 2017 8:50 pm
Dom Mar 19, 2017 8:20 pm
Dom Mar 19, 2017 12:06 pm
Sab Mar 18, 2017 10:31 pm
Sab Mar 18, 2017 10:01 pm
Sab Mar 18, 2017 8:26 pm
Sab Mar 18, 2017 8:06 pm
Sab Mar 18, 2017 6:53 pm
Sab Mar 18, 2017 5:31 pm
Sab Mar 18, 2017 9:41 am
Sab Mar 18, 2017 7:23 am
Sex Mar 17, 2017 11:51 pm
Sex Mar 17, 2017 10:02 pm
Sex Mar 17, 2017 3:21 pm
Sex Mar 17, 2017 12:42 pm
Sex Mar 17, 2017 10:47 am
Qui Mar 16, 2017 11:16 pm
Qui Mar 16, 2017 9:33 pm
Qui Mar 16, 2017 9:32 pm
Qui Mar 16, 2017 9:28 pm
Qui Mar 16, 2017 9:18 pm
Qui Mar 16, 2017 9:16 pm
Qui Mar 16, 2017 9:09 pm
Qui Mar 16, 2017 9:08 pm
Qui Mar 16, 2017 9:07 pm
Qui Mar 16, 2017 9:06 pm
Qui Mar 16, 2017 8:59 pm
Qui Mar 16, 2017 8:56 pm
Qui Mar 16, 2017 8:52 pm
Qui Mar 16, 2017 8:48 pm
Qui Mar 16, 2017 8:44 pm
Qui Mar 16, 2017 8:44 pm
Qui Mar 16, 2017 8:40 pm
Qui Mar 16, 2017 8:20 pm
Qui Mar 16, 2017 7:33 pm
Qui Mar 16, 2017 5:32 pm
Qui Mar 16, 2017 5:32 pm
Qui Mar 16, 2017 5:14 pm
Qui Mar 16, 2017 5:12 pm
Qui Mar 16, 2017 10:49 am
Qua Mar 15, 2017 7:56 pm
Qua Mar 15, 2017 7:08 pm
Qua Mar 15, 2017 5:24 pm
Qua Mar 15, 2017 5:03 pm
Qua Mar 15, 2017 3:26 pm
Qua Mar 15, 2017 3:17 pm
Qua Mar 15, 2017 2:58 pm
Qua Mar 15, 2017 2:31 pm
Qua Mar 15, 2017 11:50 am
Qua Mar 15, 2017 9:22 am
hen000
Manawydan
hen000
Weverton Borges da Silva
rafaelllsd
rafaelllsd
rafaelllsd
MateusWTP
Gabriel César O
Gabriel César O
Gabriel César O
Gabriel César O
dstaroski
Callyde Jr
hackernew404
Madness
Paizudo
Gabriel César O
AnderGames
Gabriel César O
Matrirxp
rafaelllsd
Matrirxp
AndyShow
ffabim
rafaelllsd
PauloFR
MikaelSteam
PauloFR
bravoent
Matrirxp
Ghosthy
DuViDoSo34
arnaldojunior
Édipo
Phillip
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
lucasfera15
Khilua
PauloFR
Paizudo
willtuck
rafaelllsd
rafaelllsd
IanLuan
John Rambo
kalielson
willtuck
MikaelSteam
joabr
Luiz Mauro TCC
bravoent
AndyShow
joabr
kalielson
BatataName
Callyde Jr
John Rambo
Callyde Jr
IanLuan
MarcosSchultz
Junim
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
Phillip
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
kalielson
MarcosSchultz
MarcosSchultz
Junim
Junim
Gabriel César O
Gabriel César O
Gabriel César O
Lukynhasfera70
Junim
Junim
Junim
Junim
victorgx22
dstaroski
IgorFporto
BatataName
IgorFporto
sabbath

Ajuda com interpretação de Script

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido Ajuda com interpretação de Script

Mensagem por George Lucas Vieira em Sab Set 24, 2016 1:22 am

Olá pessoal, tranquilo?
Gente, eu tô estudando novas formas de fazer uma boa movimentação no Unity baseado em física.
Fuçando na internet, encontrei este belo script (eu modifiquei ele um pouquinho)

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

[RequireComponent (typeof (Rigidbody))]
[RequireComponent (typeof (CapsuleCollider))]

public class NewBehaviourScript : MonoBehaviour {

 public float speed = 10.0f;
 public float gravity = 10.0f;
 public float maxVelocityChange = 10.0f;
 public bool canJump = true;
 public float jumpHeight = 2.0f;
 private bool grounded = false;

 private Rigidbody playerRb;

 void Awake () {
 playerRb = GetComponent<Rigidbody>();
 playerRb.freezeRotation = true;
 playerRb.useGravity = false;
 }

 void FixedUpdate () {
 if (grounded) {
 // Calculate how fast we should be moving
 Vector3 targetVelocity = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")) * speed;

 // Apply a force that attempts to reach our target velocity
 Vector3 velocity = playerRb.velocity;
 Vector3 velocityChange = (targetVelocity - velocity);
 velocityChange.x = Mathf.Clamp(velocityChange.x, -maxVelocityChange, maxVelocityChange);
 velocityChange.y = 0;
 playerRb.AddForce(velocityChange, ForceMode.VelocityChange);

 // Jump
 if (canJump && Input.GetButton("Jump")) {
 playerRb.velocity = new Vector3(velocity.x, CalculateJumpVerticalSpeed(), velocity.z);
 }
 }

 // We apply gravity manually for more tuning control
 playerRb.AddForce(new Vector3 (0, -gravity * playerRb.mass, 0));

 grounded = false;
 }

 void OnCollisionStay () {
 grounded = true;    
 }

 float CalculateJumpVerticalSpeed () {
 // From the jump height and gravity we deduce the upwards speed
 // for the character to reach at the apex.
 return Mathf.Sqrt(2 * jumpHeight * gravity);
 }
}




Eu entendi praticamente tudo do script, menos uma parte, que talvez seja a mais importante. O script está funcionando belezinha, mas eu não entendi essa linha aqui:


Código:
Vector3 velocityChange = (targetVelocity - velocity);



Pessoal, porque ele está subtraindo a velocidade do personagem? Eu tentei isolar essa linha de várias formas, mas parece que ela que controla todo o esquema de velocidade do personagem, então não tem como remover.
Enfim, porque ele está pegando o valor que eu apertei(Input.GetAxis) e subtraindo a velocidade? Gostaria da ajuda de vocês para me ajudar. Até mais, abraços.



Última edição por George Lucas Vieira em Sab Set 24, 2016 10:25 am, editado 1 vez(es)
avatar
George Lucas Vieira
Moderador

Masculino PONTOS : 600
REPUTAÇÃO : 119
Idade : 14
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Resolvido Re: Ajuda com interpretação de Script

Mensagem por MarcosSchultz em Sab Set 24, 2016 1:58 am

Fiz uma análise corrida do script com os seguintes pontos:

primeiramente, coloquei isto no awake:

Código:
Time.timeScale = 0.05f;

Isto permite analisar o que acontece bem detalhadamente... Depois, criei um Debug e coloquei como última coisa da void FixedUpdate, que é este debug aqui:

Código:
Debug.Log("targVel: " + targetVelocity + "        velocity: " + velocity + "        subtrair: " + (targetVelocity - velocity));



Com este debug, podemos perceber a targetVelocity, logo após a velocity e por último, o vetor de subtração dos 2.

Analizando a targetVelocity, já podemos perceber que o vetor não vai somente de 0 a 1, conforme os inputs horizontais e verticais, pois você está multiplicando o input pela variável "speed", conforme esta linha mostra:

Código:
Vector3 targetVelocity = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")) * speed;


Com esta linha, pode-se concluir que esta seria a "velocidade desejada" a se alcançar, pois você recebe o input, e multiplica pela velocidade que quer tentar alcançar.

O próximo debug que você recebe é o "velocity", que informa qual a velocidade atual do seu jogador...

O terceiro debug, informa qual a diferença entre a velocidade que você almeja alcançar e a velocidade real em que você está andando...


Supondo que você está pressionando A, então o seu input vai ser (-1,0,0). Agora, veja que a sua "speed" é 10, então esse vetor será multiplicado por 10, transformando o input real em (-10, 0, 0). 

Este vetor é a velocidade que você está tentando alcançar, e você o chama de "targetVelocity"

Na próxima linha, apenas pegamos a velocidade atual do rigidbody:

Código:
Vector3 velocity = playerRb.velocity;


Neste momento, a "targetVelocity" estará debugando "(-10, 0, 0)", pois é o input multiplicado pela speed.
Enquanto isso, a "velocity" estará debugando algo parecido a "(-9.9, 0,0 )"

Isto acontece por que a física gera atrito, e tende a alentar o colisor, fazendo o player "freiar"

Tendo tudo isto dito, a próxima coisa que você faz, é subtrair a velocidade que você está tentando alcançar, da velocidade real do seu player, e isto você chama de "velocityChange".

Então, se o vetor alvo é (-10, 0, 0) e o vetor real é (-9.9, 0, 0), o resultado da subtração será (-0.1, 0, 0)

Depois que isto é feito, você aplica um "clamp" no vetor, para limitar o máximo valor que este vetor poderá ter... mas estranhamente, você só faz isto no eixo X... o eixo Y você deixa como 0, pois não deve ser influenciado, e o eixo Z, não entendi por que não recebe o clamp, mas enfim, o clamp pouco interfere na análise final...

Depois que você "limita" este vetor, você faz um AddForce na direção desse vetor de subtração, nesta linha:

Código:
playerRb.AddForce(velocityChange, ForceMode.VelocityChange);

Pelo que eu entendi, isto é feito apenas para compensar o atrito que o rigidbody sofre, para compensar a frenagem natural que o objeto tem, minimizando a diferença entre a velocidade que você quer alcançar e a velocidade real do corpo...
avatar
MarcosSchultz
Administrador

Masculino PONTOS : 8092
REPUTAÇÃO : 1137
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

Resolvido Re: Ajuda com interpretação de Script

Mensagem por George Lucas Vieira em Sab Set 24, 2016 10:24 am

Você é o cara Marcos  Cool
Bem, eu não apliquei o Clamp no eixo Z pq é um jogo 2.5D...
Vlw ae!
avatar
George Lucas Vieira
Moderador

Masculino PONTOS : 600
REPUTAÇÃO : 119
Idade : 14
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

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