[RESOLVIDO] Como fazer uma parede que se move sozinha empurrar o Player?
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Como fazer uma parede que se move sozinha empurrar o Player?
Pessoal sou novo aqui, usei a busca mais nada me ajudou, comecei no Unity faz pouco tempo, então é o Seguinte, tenho um jogo que em determinado ponto, a parede se move sozinha e empurra o jogador, ela começa empurrando mais ai de repente atravessa, me parece pela caída de FPS, no começo quando a cena tinha poucas coisas quase não acontecia, porém agora toda hora passa, e isso não pode acontecer de forma alguma, para mover a Parede estou usando o transform.Translate, que já ouvi falar que não é indicado para isso, no Player estou usando o Rigidbody e um CapsuleCollider, com o Trigger desligado, alguém sabe outro método de fazer essa parede empurrar meu player?
Inspetor da Parede que deve empurrar o Player:
Inspetor do Player:
Script da porta que se move:
Inspetor da Parede que deve empurrar o Player:
Inspetor do Player:
Script da porta que se move:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PortaSingle : MonoBehaviour
{
// Start is called before the first frame update
RespawManager _respawManager;
private AudioSource _audioSource;
float portaSpeed = 30f;
void Start()
{
_respawManager = GameObject.Find("RespawManager").GetComponent<RespawManager>();
_audioSource = GetComponent<AudioSource>();
playAudio();
//CollisionDetectionMode.Continuous
}
// Update is called once per frame
void Update()
{
transform.Translate(new Vector3(0, 0, -portaSpeed * Time.deltaTime));
limite();
gameOver();
}
private void limite()
{
if (transform.position.z < -28f)
{
Destroy(this.gameObject);
}
}
private void gameOver()
{
if (_respawManager.gameover)
{
Destroy(this.gameObject);
}
}
private void playAudio()
{
if(this.gameObject.tag == "GrandePorta")
{
_audioSource.Play();
}
}
}
Arcebispo- Iniciante
- PONTOS : 1423
REPUTAÇÃO : 1
Respeito as regras :
Re: [RESOLVIDO] Como fazer uma parede que se move sozinha empurrar o Player?
O problema é a velocidade que está muito alta, mas principalmente por voce estar usando transform.translate, que não uma boa ideia para essa situação. Tente fazer assim:
Ve se isso funciona, acredito que para essa situação a melhor opção é o Rigdbody.velocity
Se nao funcionar me avise
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PortaSingle : MonoBehaviour
{
// Start is called before the first frame update
RespawManager _respawManager;
public RigdBody rb;
private AudioSource _audioSource;
float portaSpeed = 30f;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.constraints = RigidbodyConstraints.FreezePositionY | RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ;
_respawManager = GameObject.Find("RespawManager").GetComponent<RespawManager>();
_audioSource = GetComponent<AudioSource>();
playAudio();
http://CollisionDetectionMode.Continuous
}
// Update is called once per frame
void Update()
{
rb.velocity = new Vector3(0, 0, -portaSpeed * Time.deltaTime));
limite();
gameOver();
}
private void limite()
{
if (transform.position.z < -28f)
{
Destroy(this.gameObject);
}
}
private void gameOver()
{
if (_respawManager.gameover)
{
Destroy(this.gameObject);
}
}
private void playAudio()
{
if(this.gameObject.tag == "GrandePorta")
{
_audioSource.Play();
}
}
}
Ve se isso funciona, acredito que para essa situação a melhor opção é o Rigdbody.velocity
Se nao funcionar me avise
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Como fazer uma parede que se move sozinha empurrar o Player?
Obrigado pela resposta, então agora somente os objetos que estão com o is Trigger marcado que estão se movimentando, os que estão com o Trigger sem marcar simplesmente ficam parados.
Esse é o Inspector do que se movimenta
Já esse aqui não se movimenta
Esse é o Inspector do que se movimenta
Já esse aqui não se movimenta
Arcebispo- Iniciante
- PONTOS : 1423
REPUTAÇÃO : 1
Respeito as regras :
Re: [RESOLVIDO] Como fazer uma parede que se move sozinha empurrar o Player?
E ambos usam o mesmo scripts para se mover, já tentei deixa o Collision Detection no mesmo nos 2 mais não funciona.
Arcebispo- Iniciante
- PONTOS : 1423
REPUTAÇÃO : 1
Respeito as regras :
Re: [RESOLVIDO] Como fazer uma parede que se move sozinha empurrar o Player?
Nao precisa do trigger ativado para se movimentar, talvez isto está acontecendo pq ele está se movimentando em outra direçao, ele está se movimentando no eixo z mesmo ou no eixo y,? Pq desativei a movimentaçao no eixo y, para sua parede nao ter problemas de se movimentar pra qualquer lugar.
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Como fazer uma parede que se move sozinha empurrar o Player?
Ele se move no eixo Z apenas, nos outros ele não se mexe, -Z, então é estranho quando ativo o trigger ele se mexe.
Ambos iniciam no circulo vermelho, a porta grande está com trigger ativado, as outras no circulo não, porém ficam paradas, se ativo elas também se movimentam
Ambos iniciam no circulo vermelho, a porta grande está com trigger ativado, as outras no circulo não, porém ficam paradas, se ativo elas também se movimentam
Arcebispo- Iniciante
- PONTOS : 1423
REPUTAÇÃO : 1
Respeito as regras :
Re: [RESOLVIDO] Como fazer uma parede que se move sozinha empurrar o Player?
Isto é bem estranho, mas resolveu o problema de o player atravessar a parede?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Como fazer uma parede que se move sozinha empurrar o Player?
Descobri o que era rsrs, era que elas estavam sendo Instanciadas um pouco pra dentro do solo, ai por isso que quando estava "Trigger" elas se moviam rsrs, Sim resolveu, te agradeço, muito obrigado
Arcebispo- Iniciante
- PONTOS : 1423
REPUTAÇÃO : 1
Respeito as regras :
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Tópicos semelhantes
» como fazer ondas Realistas na agua quando o player se move por ela ?
» Como fazer a vida ficar encima do player enquanto ele se move
» [RESOLVIDO] Como fazer para o Player não atravessar as paredes?
» [RESOLVIDO] Como fazer para meu Player andar por um terreno irregular?
» [RESOLVIDO] Player atravessa Parede mesmo com os Colliders
» Como fazer a vida ficar encima do player enquanto ele se move
» [RESOLVIDO] Como fazer para o Player não atravessar as paredes?
» [RESOLVIDO] Como fazer para meu Player andar por um terreno irregular?
» [RESOLVIDO] Player atravessa Parede mesmo com os Colliders
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos