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:
Ideia Inovadora
Formação de Equipe Battle of Worlds
[TUTORIAL] DANO POR QUEDA e BARRA DE VIDA CONTÍNUA no mesmo script
me ajudem neste script para subir escada
Texturas
script por favor me ajudem
Como mudar rotacao de um objeto em relacao a posicao do outro objeto
Pra que serve o [SerializeField] e por que usar ele?
Forma uma equipe
Números aleatorios
erro sinistro
Gostaria da opinião de vocês sobre o beta da Unity
Cryengine 3?
Tem como saber o Tamanho do Objeto?
Banco de dados Aleatorio
Procuro desenhista para jogo 2D Pixel Art (Compra)
Script
[TUTORIAL] Barra de VIDA / HP contínua
[TUTORIAL] Sistema de Escada Estilo FPS
[Dúvida] Blender erro ao aplicar osso na mesh
[resolvido]enfiar float no UItext por script
Daria para pegar as horas do computador e por no jogo?
Gerador de Characters Autodesk Online
[____TÓPICO LIVRE____] FALE O QUE QUISER
Feixe de luz - melhor forma de fazer
Unity 5 Bugado
[TUTORIAL] Melhorar a estabilidade dos veículos com Wheel Collider
[JOGO DE FPS MULTIPLAYER] Alguém que saiba fazer animações na Unity 5 ou no blender :D
[LANÇADO] The Dilma
Inventario
Procuro vagas em equipes [Programador]
The Dilma - O terror da Petrobrás
[TUTORIAL] Menu Pause AVANÇADO (Unity 5.3 ou superior)
Ajuda Neste Script?
Guitar The Legends of Brazil
Teste de usuário para um jogo
Procuro Equipe de Jogos 2D
Duvida sobre o Peso do jogo?
Animações de sobra
[TUTORIAL]Singleton, A melhor forma de acessar a classe!
[TUTORIAL] Sistema de fome, sede, barra de vida, barra de estamina, itens e dano por queda
Mudança de FPS afetam a velocidade das coisas
[TUTORIAL] Escolher a quantos FPS (fixos) o seu jogo deverá rodar.
Examinar
[TUTORIAL] Sistema de tiro com RAYCAST (várias armas, mira laser, munição, dano, etc, etc)
Como criar um ranking online na Unity usando a PlayFab e o Facebook?
Alquem tem alguma ideia de como fazer o Player tipo a cabeça olhar para o seu inimigo?
Problema da Conta do comerciante do developer
BUG DE VOLUME NO SCRIPT MENU DE PAUSA
controle 2D com touch ou clique do mouse
[Dúvida] MySQL. Funciona apenas no editor.
[RESOLVIDO]como acesar uma void publica pelo script e ativa-la
Active UI
Como Criar Textura De Armas
Formaçao De Equipe (FLAMEBLOOD)
Fonte Proporcional
Ativar / Desativar Varios GameObject
[Duvida] Como fazer Medkit
[RESOLVIDO]Duvida com butao UI para ativar Void
Rodando o Sul
Procuro programadores para meu projeto BR Bus
Sistema de score
Strings e quebra de texto?
Procuro programadores para meu jogo
Interação com cenário
(formação de equipe BSU 17)
Personagem
Sistema de tráfego
(Dúvida) Adicionar força para girar
Como removo navigation areas do teto de um modelo em 3D?
(Duvida) Jogo de futebol
Serie de terror
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
Como sincronizar ik em um jogo online?
Como prever uma colisao?
Hoje à(s) 10:07 pm
Hoje à(s) 10:04 pm
Hoje à(s) 9:24 pm
Hoje à(s) 9:12 pm
Hoje à(s) 8:53 pm
Hoje à(s) 8:49 pm
Hoje à(s) 7:24 pm
Hoje à(s) 5:44 pm
Hoje à(s) 4:52 pm
Hoje à(s) 3:14 pm
Hoje à(s) 1:22 pm
Hoje à(s) 1:15 pm
Hoje à(s) 12:50 pm
Hoje à(s) 12:46 pm
Hoje à(s) 11:53 am
Hoje à(s) 8:06 am
Hoje à(s) 7:30 am
Ontem à(s) 11:54 pm
Ontem à(s) 11:47 pm
Ontem à(s) 11:31 pm
Ontem à(s) 10:46 pm
Ontem à(s) 7:28 pm
Ontem à(s) 6:42 pm
Ontem à(s) 5:42 pm
Ontem à(s) 5:24 pm
Ontem à(s) 5:23 pm
Ontem à(s) 5:14 pm
Ontem à(s) 5:08 pm
Ontem à(s) 5:06 pm
Ontem à(s) 4:44 pm
Qua Nov 30, 2016 11:46 pm
Qua Nov 30, 2016 11:45 pm
Qua Nov 30, 2016 11:42 pm
Qua Nov 30, 2016 11:19 pm
Ter Nov 29, 2016 11:14 pm
Ter Nov 29, 2016 8:03 pm
Ter Nov 29, 2016 7:49 pm
Ter Nov 29, 2016 12:42 pm
Ter Nov 29, 2016 12:15 pm
Ter Nov 29, 2016 10:46 am
Ter Nov 29, 2016 10:13 am
Ter Nov 29, 2016 10:08 am
Ter Nov 29, 2016 10:02 am
Ter Nov 29, 2016 9:48 am
Ter Nov 29, 2016 6:32 am
Ter Nov 29, 2016 6:29 am
Ter Nov 29, 2016 3:54 am
Ter Nov 29, 2016 3:13 am
Ter Nov 29, 2016 2:51 am
Ter Nov 29, 2016 2:47 am
Ter Nov 29, 2016 2:45 am
Ter Nov 29, 2016 1:42 am
Ter Nov 29, 2016 12:44 am
Ter Nov 29, 2016 12:24 am
Seg Nov 28, 2016 10:38 pm
Seg Nov 28, 2016 10:03 pm
Seg Nov 28, 2016 10:00 pm
Seg Nov 28, 2016 6:33 pm
Seg Nov 28, 2016 5:32 pm
Seg Nov 28, 2016 5:22 pm
Seg Nov 28, 2016 3:57 pm
Seg Nov 28, 2016 3:38 pm
Seg Nov 28, 2016 1:29 pm
Seg Nov 28, 2016 1:01 pm
Seg Nov 28, 2016 8:29 am
Seg Nov 28, 2016 7:22 am
Seg Nov 28, 2016 6:17 am
Seg Nov 28, 2016 3:06 am
Dom Nov 27, 2016 10:34 pm
Dom Nov 27, 2016 8:10 pm
Sab Nov 26, 2016 8:07 pm
Sab Nov 26, 2016 6:30 pm
Sab Nov 26, 2016 6:26 pm
Sab Nov 26, 2016 6:21 pm
Sab Nov 26, 2016 6:10 pm
AndyShow
Dom3000
edumoran
edumoran
dstaroski
dstaroski
Thiagofogaca217
Hardencio
Dom3000
Manawydan
Dom3000
ismarspn
Callyde Jr
Dom3000
artplayer
mlmattos
RodrigoPavoni
Tadaora
edumoran
rafaelllsd
weslleyFx
Extreme Craft
Édipo
artplayer
weslleyFx
weslleyFx
weslleyFx
weslleyFx
weslleyFx
weslleyFx
weslleyFx
weslleyFx
weslleyFx
weslleyFx
weslleyFx
mayokota
weslleyFx
Dom3000
artplayer
dimmuo
Hardencio
Hardencio
Hardencio
Ghosthy
Callyde Jr
Callyde Jr
Dom3000
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
Extreme Craft
kalielson
kalielson
artplayer
leandroinforware
leandroinforware
John Rambo
Extreme Craft
WesleyLemosLeal
Kelvyn_Feitosa
Weverton Borges da Silva
leandroinforware
mafipt
dimmuo
dstaroski
Callyde Jr
AndyShow
rafaelllsd
Ghosthy
Callyde Jr
weslleyFx
weslleyFx
weslleyFx
weslleyFx

[RESOLVIDO] Ajudinha com código

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

Resolvido [RESOLVIDO] Ajudinha com código

Mensagem por artplayer em Ter Ago 09, 2016 6:23 am

Salve pessoal!

Atualmente eu estou utilizando SphereCastAll no FixedUpdate para interação com objetos. Dentro deste, eu tenho um Switch Case dentro de um for para tratar as tags dos objetos de colisão do SphereCast e realizar as ações. Segue o Código:

Código:
void DisparaRayCast(){
 //Cria um SphereCastAll a partir do objeto de referência (ObjRaycast) na diagonal e armazena todas as colisões no "Array" Alvo.
 Alvo = Physics.SphereCastAll (ObjRaycast.position,0.4f,new Vector3(ObjRaycast.forward.x,-1,ObjRaycast.forward.z),3);
 //Trata as tags dos objetos que colidiram com o RayCast e executa as ações...
 for (int i = 0; i < Alvo.Length; i++) {
 switch (Alvo [i].collider.tag) {
 case "Colecionavel":
 if (Input.GetKeyDown (KeyCode.E)) {
 NetworkIdentity idObj = Alvo [i].collider.GetComponent<NetworkIdentity> ();
 Debug.Log ("<color=red>" + Alvo [i].collider.name + "</color>");
 NetworkIdentity oldObjPai = TransformPai.GetComponent<NetworkIdentity>();
 CmdPegaObjeto (idObj, idPlayer, oldObjPai);

 }
 Debug.DrawLine (ObjRaycast.position, Alvo [i].point, Color.red);
 //Destaca o Objeto
 Renderer Objeto = Alvo[i].collider.GetComponent<Renderer>();
 DestacaObjeto (Objeto,0.365f);

 break;



 default:
 
 break;
 }
 }
 
 }

Sim, eu só tenho um case para testes, mas existem outras tags a serem tratadas. Estou usando SphereCast no lugar de RayCast porque o jogador vai poder interagir com mais de um objeto.

E no FixedUpdate...
Código:
void FixedUpdate(){
 if (!isLocalPlayer) {
 return;
 }
 DisparaRayCast ();
 }

O código funciona muito bem, a questão é que em computadores com uma placa de vídeo mais modesta, em áreas que existem muitos objetos o jogo sofre uma queda de quadros terrível. Todas as máquinas em que eu realizei os testes tem o mesmo processador e memória, (i7 / 8gb de ram) mudando somente a placa de vídeo.


  1. RayCasts e derivados consomem mais processamento da GPU e não da CPU?
  2. Alguém poderia sugerir uma maneira "menos porca" de fazer isso? 
  3. Quando utilizo um RayCastAll e ele colide com um ojeto, ele não armazena só o pai, mas sim todos os filhos de um objeto?


Abraços e sucesso a todos !


Última edição por artplayer em Ter Ago 09, 2016 8:13 am, editado 1 vez(es)

artplayer
ProgramadorMaster

PONTOS : 395
REPUTAÇÃO : 71
Idade : 32
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Ajudinha com código

Mensagem por artplayer em Ter Ago 09, 2016 8:12 am

Ok, consegui amenizar muito o problema aqui. 

Troquei SphereCastAll por Spherecast e retirei o DrawLine do debug (Ele estava ajudando na queda de FPS).
Código:
void DisparaRayCast(){
 if (Physics.SphereCast (ObjRaycast.position, 0.4f, new Vector3 (ObjRaycast.forward.x, -1, ObjRaycast.forward.z), out Alvo, 3)) {
 
 switch (Alvo.collider.tag) {
 case "Colecionavel":
 ExibeBtnInteracao (true);
 if (Input.GetKeyDown (KeyCode.E)) {
 NetworkIdentity idObj = Alvo.collider.GetComponent<NetworkIdentity> ();
 Debug.Log ("<color=red>" + Alvo.collider.name + "</color>");
 NetworkIdentity oldObjPai = TransformPai.GetComponent<NetworkIdentity> ();
 CmdPegaObjeto (idObj, idPlayer, oldObjPai);
 }
 

 break;



 default:
 ExibeBtnInteracao (false);
 break;
 }
 };
 
 }

Isso já reduziu bastante a queda de FPS em uma placa de vídeo inferior, mas não o bastante a ponto de deixar o jogo liso. Com esta mesma placa de vídeo, fiz alguns testes em jogos com mapas parecidos com o meu desenvolvidos com unity ( The Forest foi um deles ).
O problema é exatamente o mesmo quando se trata de mapas com muitas árvores/grama. Pra falar a verdade o desempenho é exatamente o mesmo, mesmo com configurações muito baixas.

Minha conclusão:
Meu código estava porco sim (E ainda pode estar), mas não dá pra ter um desempenho ótimo em todas as placas de vídeo, infelizmente. 
Pelo menos isso me ajudou a ter um parâmetro pra definir os requisitos mínimos do jogo. Wink

artplayer
ProgramadorMaster

PONTOS : 395
REPUTAÇÃO : 71
Idade : 32
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Ajudinha com código

Mensagem por MarcosSchultz em Qua Ago 10, 2016 11:32 pm

SphereCast infelizmente eh MUITO pesado.

Este é um dos motivos da wheelCollider da Unity (colisor para rodas) ser tão ruim. Eles priorizaram o desempenho e fizeram ser apenas 1 raycast para baixo em vez de um circulo com vários raios.

Depende da sua necessidade, mas as vezes usar um Raycast pode ser mais lucrativo

MarcosSchultz
Administrador

Masculino PONTOS : 7109
REPUTAÇÃO : 876
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: [RESOLVIDO] Ajudinha com código

Mensagem por artplayer em Sab Ago 13, 2016 3:46 pm

É que no meu caso, o personagem está em terceira pessoa e a cabeça dele não se move. Um RayCast simples acabaria sendo muito "fino". Ainda estou usando SphereCast, mas a sua mensagem acabou me fazendo ter uma idéia:

"Rotacionar" o raycast em um ângulo de 45º pra cima e pra baixo a partir do centro, uma espécie de scanner. Só não sei se isso vai interferir no desempenho.

artplayer
ProgramadorMaster

PONTOS : 395
REPUTAÇÃO : 71
Idade : 32
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Ajudinha com código

Mensagem por RenanMSV em Sab Ago 13, 2016 3:54 pm

Colocar um raycast no centro da tela ignorando o player n da ?

RenanMSV
Instrutor

Masculino PONTOS : 1511
REPUTAÇÃO : 309
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Ajudinha com código

Mensagem por artplayer em Sab Ago 13, 2016 5:33 pm

RenanMSV escreveu:Colocar um raycast no centro da tela ignorando o player n da ?

É que podem ter Objetos no chão ou no alto e a cabeça dele não se move. Então atuamento estou usando um Spherecast com uma grossura razoável saindo dos olhos dele em direção ao chão. Estou usando MeshCollider em algumas ferramentas. Um RayCast comum, acaba não pegando em objetos muito finos ou pequenos. Por isso acabei optando pelo Sphere. Mas tenho a impressão que isso está me dando um custo desnecessário.




... A não ser que eu ponha um BoxCollider com IsTrigger!, Daí dá pra usar um RayCast de boa acho. Vou correr e testar aqui.

 Não tinha pensado nisso ainda! Embarassed

artplayer
ProgramadorMaster

PONTOS : 395
REPUTAÇÃO : 71
Idade : 32
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Ajudinha com código

Mensagem por artplayer em Sab Ago 13, 2016 5:56 pm

Funcionou bem aqui, substitui o SphereCast por um Raycast, e nos objetos tenho um MeshCollider ( pra manter a realidade da física quando o objeto cai no chão por exemplo ), e um BoxCollider com IsTrigger pro Raycast.

Não vi mudança em questão de desempenho. No final, acabei ficando com a impressão de que troquei 6 por meia dúzia.

artplayer
ProgramadorMaster

PONTOS : 395
REPUTAÇÃO : 71
Idade : 32
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Ajudinha com código

Mensagem por Manawydan em Sab Ago 13, 2016 6:49 pm

voce usa o profiler pra verificar o desempenho?

Manawydan
Moderador

PONTOS : 470
REPUTAÇÃO : 82
Idade : 19
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Ajudinha com código

Mensagem por artplayer em Sab Ago 13, 2016 7:01 pm

Sim sim, só diminuiu um pouco o consumo da CPU. E em resoluções mais baixas o FPS foi de 28 a 78 ~100. Então acho que tive um ganho considerável sim. Só vou ter que testar o client em uma máquina mais modesta.

artplayer
ProgramadorMaster

PONTOS : 395
REPUTAÇÃO : 71
Idade : 32
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