Problema ao tornar personagem filho de outro objeto
2 participantes
Página 1 de 1
Problema ao tornar personagem filho de outro objeto
Boa noite.
Eu tenho um elevador em uma cena na Unity, para evitar que a câmera fique tremendo durante a movimentação, eu tornei o Player filho do elevador, mas a câmera fica toda bagunçada. Alguém sahe como contornar esse problema?
Antes eu utilizei os scripts abaixo e funcionou, mas agora em outro projeto não funciona mais, não sei a razão, é estranho já que se trata da mesma versão da Unity.
Eu tenho um elevador em uma cena na Unity, para evitar que a câmera fique tremendo durante a movimentação, eu tornei o Player filho do elevador, mas a câmera fica toda bagunçada. Alguém sahe como contornar esse problema?
Antes eu utilizei os scripts abaixo e funcionou, mas agora em outro projeto não funciona mais, não sei a razão, é estranho já que se trata da mesma versão da Unity.
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class CarryRigidbodies : MonoBehaviour
{
public bool useSensorAsTrigger = false;
public List<Rigidbody> rigidbodies = new List<Rigidbody>();
public Vector3 LastPosition;
Transform _transform;
[HideInInspector] public Rigidbody _rigidbody;
void Start ()
{
_transform = transform;
LastPosition = _transform.position;
_rigidbody = GetComponent<Rigidbody>();
if (useSensorAsTrigger)
{
foreach(CarryRigidbodiesSensor sensor in GetComponentsInChildren<CarryRigidbodiesSensor>())
{
sensor.carrier = this;
}
}
}
void LateUpdate()
{
if (rigidbodies.Count > 0)
{
for (int i = 0; i < rigidbodies.Count; ++i)
{
Rigidbody rb = rigidbodies[i];
Vector3 velocity = (_transform.position - LastPosition);
rb.transform.Translate(velocity, _transform);
}
}
LastPosition = _transform.position;
}
void OnCollisionEnter(Collision c)
{
if (useSensorAsTrigger) return;
Rigidbody rb = c.collider.GetComponent<Rigidbody>();
if (rb != null)
{
Add(rb);
}
}
void OnCollisionExit(Collision c)
{
if (useSensorAsTrigger) return;
Rigidbody rb = c.collider.GetComponent<Rigidbody>();
if (rb != null)
{
Remove(rb);
}
}
public void Add(Rigidbody rb)
{
if (!rigidbodies.Contains(rb))
rigidbodies.Add(rb);
}
public void Remove(Rigidbody rb)
{
if (rigidbodies.Contains(rb))
rigidbodies.Remove(rb);
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CarryRigidbodiesSensor : MonoBehaviour
{
[HideInInspector] public CarryRigidbodies carrier;
void OnTriggerEnter(Collider ob)
{
Rigidbody rb = ob.GetComponent<Rigidbody>();
if (rb != null && rb != carrier._rigidbody)
{
carrier.Add(rb);
}
}
void OnTriggerExit(Collider ob)
{
Rigidbody rb = ob.GetComponent<Rigidbody>();
if (rb != null && rb != carrier._rigidbody)
{
carrier.Remove(rb);
}
}
}
Re: Problema ao tornar personagem filho de outro objeto
Resolvi testar mudar os voids.... o void Awake resolveu o problema,
Re: Problema ao tornar personagem filho de outro objeto
Quando mudar objetos de parentesco por assim dizer, é sempre importante que os objetos "pai" possuam escala "1, 1, 1", do contrário, os objetos filho vão ser redimensionados e as coisas ficam estranhas.
Tópicos semelhantes
» Tornar um objeto instanciado como filho de um outro que está em cena
» Tornar objeto filho por script
» Setar objeto filho de outro objeto via scrit
» [Duvida]Como fazer um objeto Filho de outro
» Como fazer para interagir um objeto com um outro objeto [Estilo Granny]
» Tornar objeto filho por script
» Setar objeto filho de outro objeto via scrit
» [Duvida]Como fazer um objeto Filho de outro
» Como fazer para interagir um objeto com um outro objeto [Estilo Granny]
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos