(Ajuda) Girar objetos.
3 participantes
Página 1 de 1
(Ajuda) Girar objetos.
Olá, estou tentando desenvolver um jogo para android, mais sei o basico. Bom, quando você clica em um botão que ta na tela ele instancia um item, e eu quero fazer um sistema de girar este objeto, tentei algumas coisas mais sempre que giro 1 objeto todos giram. Queria uma ideia para fazer isto, por que não consegui pensar em algo que funciona.
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: (Ajuda) Girar objetos.
poste os sistemas que você tentou... para girar todos os objetos, você tem que estar fazendo algo bem errado...
a princípio, basta um simples sistema de rotação com eulerAngles
a princípio, basta um simples sistema de rotação com eulerAngles
Re: (Ajuda) Girar objetos.
Então, eu fiz uma gambiarra, que quando aperta-se o botão o Objeto e o objeto com a Tag "Objetos" girasse se tivesse com a boleana True. mais acabava que sempre que eu instanciava, eles ficavam true, e todos giravam, eu ja exclui as linhas que tinha feito, por que ficou ruim. só quero uma ideia de como faze-los.
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: (Ajuda) Girar objetos.
Amigo, como o Marcos pediu, posta o sistema que você usa para analisarmos onde está o erro.
ismarspn- Programador
- PONTOS : 3999
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: (Ajuda) Girar objetos.
Não postei antes por que eu tinha excluido mais refiz novamente, desde já, aviso que eu não tinha ideia quando-o fiz. por isso pedi alguma ideia de fazer o sistema de giro.
- Código:
public Vector3 screenPoint;
public Vector3 offset;
public Vector3 scanPos;
public RectTransform b;
public bool Movimento;
public static bool MovimentoAll;
public static bool PodeGirar;
void Start () {
Movimento = true;
PodeGirar = true;
}
void Update (){
scanPos = transform.position;
if (MovimentoAll == true) {
Movimento = false;
}
}
public void OnMouseDown() {
if (Movimento == true) {
screenPoint = Camera.main.WorldToScreenPoint(scanPos);
offset = scanPos - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
}
}
public void OnMouseDrag() {
if (Movimento == true) {
Vector3 curScreenPoint = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
Vector3 curPosition = Camera.main.ScreenToWorldPoint (curScreenPoint) + offset;
transform.position = curPosition;
b.transform.position = curPosition;
}
}
public void GirarObjetos () { //Botão de Girar o objeto instanciado
if(PodeGirar == true) {
transform.Rotate (0, 0, 10);
}
}
public void TerminarObjeto () { //Botão de terminar e para de girar o objeto, e instanciar outro.
PodeGirar = false;
Movimento = false;
}
}
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: (Ajuda) Girar objetos.
aqui está o problema:
A void é pública, e todos os objetos que tem este script serão afetados por ela...
Você poderia especificar beeem detalhadamente como está a sua cena e como planeja girar os objetos??? tipo, quer girar apenas o objeto que acabou de instanciar?
- Código:
public void GirarObjetos () { //Botão de Girar o objeto instanciado
if(PodeGirar == true) {
transform.Rotate (0, 0, 10);
}
}
A void é pública, e todos os objetos que tem este script serão afetados por ela...
Você poderia especificar beeem detalhadamente como está a sua cena e como planeja girar os objetos??? tipo, quer girar apenas o objeto que acabou de instanciar?
Re: (Ajuda) Girar objetos.
Bom, quando ele é instanciado eu queria que uma boleana ficasse true, e quando eu instanciasse outro objeto contendo mesmo script ele ficasse false, para não se movimentar e o instanciado fica true para girar. Para girar os objetos, eu to usando um botão da canvas.
Más ja tentei também quando a pessoa pressionar o botão na tela ele gira. usando Input.GetMouseButtonDown(0)), mais não deu muito certo.
Más ja tentei também quando a pessoa pressionar o botão na tela ele gira. usando Input.GetMouseButtonDown(0)), mais não deu muito certo.
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: (Ajuda) Girar objetos.
Cara, não precisa de booleana nem nada, basta guardar o objeto instanciado em uma variável, exemplo:
depois disso, basta aplicar a rotação a este "objetoInstanciado", e só ele será afetado
- Código:
GameObject objetoInstanciado = Instantiate (objetoASerInstanciado, transform.position, transform.rotation)as GameObject;
depois disso, basta aplicar a rotação a este "objetoInstanciado", e só ele será afetado
Re: (Ajuda) Girar objetos.
Marcos eu tenho uma duvida previa, eu tenho 2 scripts um que instancia o objeto e outro que vai no objeto. esse codigo acima é oque vai no de instanciar certo. e no script de movimento tenho que adicionar algo?
Script que instancia itens:
Script que instancia itens:
- Código:
public GameObject Bola;
public GameObject Rampa;
public Transform Ponto;
public GameObject BotaoC;
public int Instanciar;
public GameObject[] objetoInstanciado;
void Start () {
Instanciar = 10;
}
void Update () {
}
public void Terminar () {
BotaoC.SetActive (false);
Bola.SetActive (true);
MovimentoMouse.MovimentoAll = true;
}
public void Ramp () {
if (Instanciar >= 1) {
GameObject objetoInstanciado = Instantiate (Rampa, Ponto.position, transform.rotation)as GameObject;
Instanciar -= 1;
}
}
}
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: (Ajuda) Girar objetos.
Cara, faça tudo em um script só, no caso, nesse que você usa para instanciar... a referencia já está nele, então basta aplicar a rotação agora
Re: (Ajuda) Girar objetos.
Fiz o seguinte:
- Código:
public Vector3 screenPoint;
public Vector3 offset;
public Vector3 scanPos;
public RectTransform b;
public bool Movimento;
public static bool MovimentoAll;
public static bool PodeGirar;
// Itens Behaviour
public GameObject Bola;
public GameObject Rampa;
public Transform Ponto;
public GameObject BotaoC;
public int Instanciar;
public GameObject[] objetoInstanciado;
void Start () {
Movimento = true;
PodeGirar = true;
Instanciar = 10;
}
void Update (){
scanPos = transform.position;
if (MovimentoAll == true) {
Movimento = false;
}
if (Input.GetKey (KeyCode.R)) {
transform.Rotate (0, 0, 10);
}
}
public void OnMouseDown() {
if (Movimento == true) {
screenPoint = Camera.main.WorldToScreenPoint(scanPos);
offset = scanPos - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
}
}
public void OnMouseDrag() {
if (Movimento == true) {
Vector3 curScreenPoint = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
Vector3 curPosition = Camera.main.ScreenToWorldPoint (curScreenPoint) + offset;
transform.position = curPosition;
b.transform.position = curPosition;
}
}
public void TerminarObjeto () { //Botão de terminar e para de girar o objeto, e instanciar outro.
PodeGirar = false;
Movimento = false;
}
public void Terminar () {
BotaoC.SetActive (false);
Bola.SetActive (true);
MovimentoMouse.MovimentoAll = true;
}
public void Ramp () {
if (Instanciar >= 1) {
GameObject objetoInstanciado = Instantiate (Rampa, Ponto.position, transform.rotation)as GameObject;
Instanciar -= 1;
}
}
}
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: (Ajuda) Girar objetos.
Fiz um modelo resumido para você entender melhor:
- Código:
public GameObject Rampa, Ponto;
private GameObject objetoInstanciado;
void Update(){
if (Input.GetKeyDown (KeyCode.E)) {
Instanciar ();
}
if (Input.GetKey (KeyCode.R)) {
Rotacionar ();
}
}
void Instanciar () {
objetoInstanciado = Instantiate (Rampa, Ponto.transform.position, transform.rotation)as GameObject;
}
void Rotacionar(){
if (objetoInstanciado != null) {
objetoInstanciado.transform.Rotate (0, 0, 10 * Time.deltaTime);
}
}
Re: (Ajuda) Girar objetos.
Valeu Marcos. primeira vez que estou trabalhando com Mobile.
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Tópicos semelhantes
» Como fazer para girar o celular e com isto girar o volante do veículo?
» [Ajuda] Contorno em objetos
» [AJUDA] Contorno colorido em objetos.
» (AJUDA) DESTRUIR OBJETOS INSTANCIADOS
» [Ajuda] Preciso de ajuda para controlar e alterar o valor de Lerp de varios objetos
» [Ajuda] Contorno em objetos
» [AJUDA] Contorno colorido em objetos.
» (AJUDA) DESTRUIR OBJETOS INSTANCIADOS
» [Ajuda] Preciso de ajuda para controlar e alterar o valor de Lerp de varios objetos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos