Objetos girando em órbita de outro
+4
Phph09
MarcosSchultz
fabriciorsz34
Flávio
8 participantes
Página 1 de 1
Objetos girando em órbita de outro
boa noite pessoal
tenho um personagem que vai se movimentar quando eu apertar as teclas direcionais. vou dar o nome de Player.
dentro do Player eu coloquei um objeto filho chamado 'pivo'
eu quero que ao redor desse pivo gire dois objetos que servirão de um escudo, um objeto A e um B
é a mesma coisa que essas plataformas que ficam girando no ar no jogo sonic 2, peguem o tempo 54 mim e 26s exatamente
tem 4 plataformas girando:
as plataformas giram em torno de um ponto.
é a mesma coisa que fiz com o pivo, ele é o ponto em torno do qual vão girar os dois objetos
só que enquanto A está de uma lado, o B está do outro lado
usei esse script de rotação anexado nos objetos A e B:
quando eu pegar um item especifico na fase, vai instanciar esses objetos A e B na posição do pivo, eles serão filhos do pivo
script para instanciar:
está dando erro que os objetos A e B não instanciam no lugar correto e ficam rodando no ar totalmente errado
e quando eu movimento o Player os dois objetos nao seguem o Player
como corrijo isso?
tenho um personagem que vai se movimentar quando eu apertar as teclas direcionais. vou dar o nome de Player.
dentro do Player eu coloquei um objeto filho chamado 'pivo'
eu quero que ao redor desse pivo gire dois objetos que servirão de um escudo, um objeto A e um B
é a mesma coisa que essas plataformas que ficam girando no ar no jogo sonic 2, peguem o tempo 54 mim e 26s exatamente
tem 4 plataformas girando:
as plataformas giram em torno de um ponto.
é a mesma coisa que fiz com o pivo, ele é o ponto em torno do qual vão girar os dois objetos
só que enquanto A está de uma lado, o B está do outro lado
usei esse script de rotação anexado nos objetos A e B:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjetoEmOrbita : MonoBehaviour {
public Transform alvo;
public Vector3 eixo;
public float velocidade;
public float diametro;
public bool rotacionar;
void Start() {
rotacionar = false;
StartCoroutine(Rotacao());
}
IEnumerator Rotacao() {
yield return new WaitForSeconds(0.7f);
rotacionar = true;
}
void Update() {
if (rotacionar) {
transform.RotateAround(alvo.position, eixo, velocidade * Time.deltaTime);
Vector3 posDesejada = (transform.position - alvo.position).normalized * diametro + alvo.position;
transform.position = Vector3.Lerp(transform.position, posDesejada, 5 * Time.deltaTime);
}
}
}
quando eu pegar um item especifico na fase, vai instanciar esses objetos A e B na posição do pivo, eles serão filhos do pivo
script para instanciar:
- Código:
public Transform pivoTransform;
public GameObject pivo;
public GameObject esf1;
public GameObject esf2;
void Update() {
}
void OnTriggerEnter2D(Collider2D c) {
if (c.gameObject.tag == "esc") {
GameObject prefEsfera1 = Instantiate(esf1, pivo.transform.position, transform.rotation) as GameObject;
GameObject prefEsfera2 = Instantiate(esf2, pivo.transform.position, transform.rotation) as GameObject;
prefEsfera1.transform.SetParent(pivoTransform);
prefEsfera2.transform.SetParent(pivoTransform);
}
}
está dando erro que os objetos A e B não instanciam no lugar correto e ficam rodando no ar totalmente errado
e quando eu movimento o Player os dois objetos nao seguem o Player
como corrijo isso?
Flávio- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Objetos girando em órbita de outro
Kkkk acho q asolucao seria colocar na void update nao é msm?
fabriciorsz34- Avançado
- PONTOS : 3340
REPUTAÇÃO : 25
Idade : 24
Áreas de atuação : C#,unity,cinema 4D, SketchUp
Respeito as regras :
Re: Objetos girando em órbita de outro
Ah nao desculpe me vi errado mas ao meu ver ele deveria estar funcionando vc linkou td certo,ele ta dentro de outro objeto, tem algum outro script, quais seus componentes?
fabriciorsz34- Avançado
- PONTOS : 3340
REPUTAÇÃO : 25
Idade : 24
Áreas de atuação : C#,unity,cinema 4D, SketchUp
Respeito as regras :
Re: Objetos girando em órbita de outro
É msm como marcos disse se linkou td certo e os others scripts nao afetem no gameobject deveria funcionar
fabriciorsz34- Avançado
- PONTOS : 3340
REPUTAÇÃO : 25
Idade : 24
Áreas de atuação : C#,unity,cinema 4D, SketchUp
Respeito as regras :
Re: Objetos girando em órbita de outro
já tentou usar localPosition? N
o lugar de transform.position tente transform.localPosition;
o lugar de transform.position tente transform.localPosition;
Phph09- Profissional
- PONTOS : 3791
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Objetos girando em órbita de outro
vejam só eu fiz esse teste aqui, a esfera grande é um planeta e as esferas pequenas os satelites:
funcionou, era isso que eu queria mesmo, só que quando eu vou movimentando a esfera grande, as pequenas vão desalinhando e saindo do lugar até ocorrer de elas ficarem uma em cima a outra no final.
queria que as esferinhas ficassem girando do mesmo jeito que foi no inicio antes de eu começar a movimentar a esfera grande.
como faço isso?
funcionou, era isso que eu queria mesmo, só que quando eu vou movimentando a esfera grande, as pequenas vão desalinhando e saindo do lugar até ocorrer de elas ficarem uma em cima a outra no final.
queria que as esferinhas ficassem girando do mesmo jeito que foi no inicio antes de eu começar a movimentar a esfera grande.
como faço isso?
Flávio- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Objetos girando em órbita de outro
Provavelmente você fez isto por Script. Tente afiliar um objeto ao Pai, "Pivot".
NKKF- ProgramadorMaster
- PONTOS : 4820
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Objetos girando em órbita de outro
Você pode tentar, tirando o lerp
Weslley- Moderador
- PONTOS : 5729
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Objetos girando em órbita de outro
Proprio "Standart Assets" da Unity tem um Script Prontinho que Faz Exatamente isso que vc Quer
Só Colocar no Pivô que todos os "Filhos" vão Girar Assim como vc Configurou (X,Y,Z) com Opção de Girar no Espaço Local ou Não, Velocidade Etc....
No "Standart Assets" vem quase tudo de Mão Beijada mas nem Sempre é Estudado!
- Código:
using System;
using UnityEngine;
namespace UnityStandardAssets.Utility
{
public class AutoMoveAndRotate : MonoBehaviour
{
public Vector3andSpace moveUnitsPerSecond;
public Vector3andSpace rotateDegreesPerSecond;
public bool ignoreTimescale;
private float m_LastRealTime;
private void Start()
{
m_LastRealTime = Time.realtimeSinceStartup;
}
// Update is called once per frame
private void Update()
{
float deltaTime = Time.deltaTime;
if (ignoreTimescale)
{
deltaTime = (Time.realtimeSinceStartup - m_LastRealTime);
m_LastRealTime = Time.realtimeSinceStartup;
}
transform.Translate(moveUnitsPerSecond.value*deltaTime, moveUnitsPerSecond.space);
transform.Rotate(rotateDegreesPerSecond.value*deltaTime, moveUnitsPerSecond.space);
}
[Serializable]
public class Vector3andSpace
{
public Vector3 value;
public Space space = Space.Self;
}
}
}
Só Colocar no Pivô que todos os "Filhos" vão Girar Assim como vc Configurou (X,Y,Z) com Opção de Girar no Espaço Local ou Não, Velocidade Etc....
No "Standart Assets" vem quase tudo de Mão Beijada mas nem Sempre é Estudado!
Re: Objetos girando em órbita de outro
Andyshow como abro esse Standart Assets para visualizar isso?
Flávio- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Objetos girando em órbita de outro
Kk, não sou o Andy, mas espero te ajudar: Na aba Assets, faça o seguinte: Assets > Import Package>Utilities e importe, você vai receber várias coisas que podem ser úteis
NKKF- ProgramadorMaster
- PONTOS : 4820
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Objetos girando em órbita de outro
kkk isso prova que não é possivel as orbitas dos planetas ficarem em ordem como nos ensina a Fisica kkkkFlávio escreveu:vejam só eu fiz esse teste aqui, a esfera grande é um planeta e as esferas pequenas os satelites:
funcionou, era isso que eu queria mesmo, só que quando eu vou movimentando a esfera grande, as pequenas vão desalinhando e saindo do lugar até ocorrer de elas ficarem uma em cima a outra no final.
queria que as esferinhas ficassem girando do mesmo jeito que foi no inicio antes de eu começar a movimentar a esfera grande.
como faço isso?
Tópicos semelhantes
» como fazer uma AI de carregar objetos de um lugar a outro
» Sistema de gravidade em órbita
» [RESLVIDO] Unity - "transform.SetParent()" em 2 objetos move outros objetos
» Reflexos girando de acordo com a saturação da cor
» Player girando e animação não executa
» Sistema de gravidade em órbita
» [RESLVIDO] Unity - "transform.SetParent()" em 2 objetos move outros objetos
» Reflexos girando de acordo com a saturação da cor
» Player girando e animação não executa
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos