Player não acompanha plataforma
4 participantes
Página 1 de 1
Player não acompanha plataforma
Opa, criei um script de plataforma(movimentação constante de ida e volta em um objeto), todavia, o player não acompanha a plataforma enquanto está em cima dela, não faço ideia de como solucionar isso(na verdade tenho umas gambiarra em mente) de maneira mais PROFISSIONAL. enfim:
VIDEO DO ERRO
SCRIPT DA PLATAFORMA
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovimentoConstante : MonoBehaviour {
public Vector3 vtFinal;
public Vector3 vtDestino;
private Vector3 vtInicial;
public float velocidadeDoMovimento;
private bool chegou;
private int vX;
private int vY;
private int vZ;
void Awake () {
vtInicial = transform.position;
//direção x
if (vtFinal.x > 0) {
vX = 1;
}
if (vtFinal.x == 0) {
vX = 0;
}
if (vtFinal.x < 0) {
vX = -1;
}
//direção y
if (vtFinal.y > 0) {
vY = 1;
}
if (vtFinal.y == 0) {
vY = 0;
}
if (vtFinal.y < 0) {
vY = -1;
}
//direção z
if (vtFinal.z > 0) {
vZ = 1;
}
if (vtFinal.z == 0) {
vZ = 0;
}
if (vtFinal.z < 0) {
vZ = -1;
}
}
void Update () {
if ((int)transform.position.z == (int)vtDestino.z && !chegou) {
if ((int)transform.position.y == (int)vtDestino.y && !chegou) {
if ((int)transform.position.x == (int)vtDestino.x && !chegou) {
chegou = true;
Debug.Log ("tudo igual");
} else {
Debug.Log ("X diferente");
transform.position = new Vector3 (transform.position.x + (velocidadeDoMovimento * Time.deltaTime * vX), transform.position.y + (velocidadeDoMovimento * Time.deltaTime * vY), transform.position.z + (velocidadeDoMovimento * Time.deltaTime * vZ));
}
} else {
Debug.Log ("Y diferente");
transform.position = new Vector3 (transform.position.x + (velocidadeDoMovimento * Time.deltaTime * vX), transform.position.y + (velocidadeDoMovimento * Time.deltaTime * vY), transform.position.z + (velocidadeDoMovimento * Time.deltaTime * vZ));
}
} else {
Debug.Log ("Z diferente");
transform.position = new Vector3 (transform.position.x + (velocidadeDoMovimento * Time.deltaTime * vX), transform.position.y + (velocidadeDoMovimento * Time.deltaTime * vY), transform.position.z + (velocidadeDoMovimento * Time.deltaTime * vZ));
}
if ((int)transform.position.z == (int)vtInicial.z && (int)transform.position.y == (int)vtInicial.y && (int)transform.position.x == (int)vtInicial.x) {
chegou = false;
} else {
}
if (chegou) {
transform.position = new Vector3 (transform.position.x + (-velocidadeDoMovimento *2 * Time.deltaTime * vX), transform.position.y + (-velocidadeDoMovimento * 2 * Time.deltaTime * vY), transform.position.z + (-velocidadeDoMovimento * 2 * Time.deltaTime * vZ));
}
}
}
Sucessos pra mim
parkournick- Membro
- PONTOS : 3202
REPUTAÇÃO : 3
Idade : 22
Áreas de atuação : C#, Python
Respeito as regras :
Re: Player não acompanha plataforma
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour {
public GameObject Plataforma;
public GameObject player;
public float DistanciaMinima;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
float dist = Vector3.Distance(player.transform.position , Plataforma.transform.position);
if (dist <= DistanciaMinima){
player.transform.position = new Vector3(Plataforma.transform.position.x,0f,0f);
}
}
}
Tenta isso.
Coloque um valor menor que 2 na variavel "DistanciaMinima"
Re: Player não acompanha plataforma
So tranformar o player parent da plataforma.
Linka a plataforma na variavel e coloque a tag "Plataforma" na plataforma.
OBS: Coloque este script no player.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Teste : MonoBehaviour {
public Transform plataforma;
void Start () {
}
void Update ()
{
RaycastHit hit;
if(Physics.Raycast(transform.position, Vector3.down, out hit))
{
if(hit.collider.CompareTag("Plataforma"))
{
transform.parent = plataforma;
}else
{
transform.parent = null;
}
}
}
}
Linka a plataforma na variavel e coloque a tag "Plataforma" na plataforma.
OBS: Coloque este script no player.
Zecandy- Mestre
- PONTOS : 3505
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: Player não acompanha plataforma
poxa rapaz, essa ai era a gambiarra que eu tinha em mente, enfim, vou ter que fazer isso mesmo :D (pensei que tinha outro modo usando a fisica da unity)Zecandy escreveu:So tranformar o player parent da plataforma.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Teste : MonoBehaviour {
public Transform plataforma;
void Start () {
}
void Update ()
{
RaycastHit hit;
if(Physics.Raycast(transform.position, Vector3.down, out hit))
{
if(hit.collider.CompareTag("Plataforma"))
{
transform.parent = plataforma;
}else
{
transform.parent = null;
}
}
}
}
Linka a plataforma na variavel e coloque a tag "Plataforma" na plataforma.
OBS: Coloque este script no player.
só que ai eu fazer um script pra plataforma linka oque toca nela, já que não é só o player que pode tocar nela...
parkournick- Membro
- PONTOS : 3202
REPUTAÇÃO : 3
Idade : 22
Áreas de atuação : C#, Python
Respeito as regras :
Re: Player não acompanha plataforma
Será que não é hit.collider.gameObject.tag ou CompareTag("plataforma") na condição do if?Zecandy escreveu:So tranformar o player parent da plataforma.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Teste : MonoBehaviour {
public Transform plataforma;
void Start () {
}
void Update ()
{
RaycastHit hit;
if(Physics.Raycast(transform.position, Vector3.down, out hit))
{
if(hit.collider.CompareTag("Plataforma"))
{
transform.parent = plataforma;
}else
{
transform.parent = null;
}
}
}
}
Linka a plataforma na variavel e coloque a tag "Plataforma" na plataforma.
OBS: Coloque este script no player.
Simplizãum S- Membro
- PONTOS : 2735
REPUTAÇÃO : 15
Idade : 26
Respeito as regras :
Re: Player não acompanha plataforma
Opa amigão assim tbm deu certo.Simplizãum S escreveu:Será que não é hit.collider.gameObject.tag ou CompareTag("plataforma") na condição do if?Zecandy escreveu:So tranformar o player parent da plataforma.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Teste : MonoBehaviour {
public Transform plataforma;
void Start () {
}
void Update ()
{
RaycastHit hit;
if(Physics.Raycast(transform.position, Vector3.down, out hit))
{
if(hit.collider.CompareTag("Plataforma"))
{
transform.parent = plataforma;
}else
{
transform.parent = null;
}
}
}
}
Linka a plataforma na variavel e coloque a tag "Plataforma" na plataforma.
OBS: Coloque este script no player.
Zecandy- Mestre
- PONTOS : 3505
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: Player não acompanha plataforma
Zecandy escreveu:Opa amigão assim tbm deu certo.Simplizãum S escreveu:Será que não é hit.collider.gameObject.tag ou CompareTag("plataforma") na condição do if?Zecandy escreveu:So tranformar o player parent da plataforma.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Teste : MonoBehaviour {
public Transform plataforma;
void Start () {
}
void Update ()
{
RaycastHit hit;
if(Physics.Raycast(transform.position, Vector3.down, out hit))
{
if(hit.collider.CompareTag("Plataforma"))
{
transform.parent = plataforma;
}else
{
transform.parent = null;
}
}
}
}
Linka a plataforma na variavel e coloque a tag "Plataforma" na plataforma.
OBS: Coloque este script no player.
O que bom que funcionou para tu.
Simplizãum S- Membro
- PONTOS : 2735
REPUTAÇÃO : 15
Idade : 26
Respeito as regras :
Tópicos semelhantes
» Player não segue a plataforma [Como resolver???]
» Ajuda com scripts de inimigo e player'' interação de zumbi e player''
» [RESOLVIDO] Player 2D girando ao descer de plataforma
» Plataforma Móvel
» BoxCollidernão acompanha Animação
» Ajuda com scripts de inimigo e player'' interação de zumbi e player''
» [RESOLVIDO] Player 2D girando ao descer de plataforma
» Plataforma Móvel
» BoxCollidernão acompanha Animação
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos