Sistema de atração e repulsao
3 participantes
Página 1 de 1
Sistema de atração e repulsao
Imagine a seguinte cena
Dois quadrados 2D um do lado do outro que quando apertasse a tecla "space" se separassem(com uma velocidade qualquer) pelo "EIXO X"
e ao mesmo tempo iniciassem uma rotação em volta do próprio eixo
para quando soltar a tecla "space" os objetos voltariam para a rotação e posição inicial
que no caso é:
objeto 1= -1.2
objeto 2= 1.2
estou com dificuldade em criar um script de atração e repulsão
queria saber se alguém pode me ajudar???
(se possível em javascript,caso não seja possível pode ser em c#)
Dois quadrados 2D um do lado do outro que quando apertasse a tecla "space" se separassem(com uma velocidade qualquer) pelo "EIXO X"
e ao mesmo tempo iniciassem uma rotação em volta do próprio eixo
para quando soltar a tecla "space" os objetos voltariam para a rotação e posição inicial
que no caso é:
objeto 1= -1.2
objeto 2= 1.2
estou com dificuldade em criar um script de atração e repulsão
queria saber se alguém pode me ajudar???
(se possível em javascript,caso não seja possível pode ser em c#)
danyllo106- Avançado
- PONTOS : 3526
REPUTAÇÃO : 7
Idade : 27
Respeito as regras :
Re: Sistema de atração e repulsao
Não sei se é exatamente o que você queria fiz um UnityPackage por causa que tem uma scene para entender o que eu fiz;
Download
Download
Stipp- Avançado
- PONTOS : 3644
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: Sistema de atração e repulsao
FIZ UM VIDEO PARA VOCÊS ENTENDEREM MELHOR
AXO Q NAO DEIXEI CLARO NO VIDEO
MAIS QUANDO A TECLA BARRA DE ESPAÇO DEIXAR DE SER PRESSIONADA OS
OBJETOS VOLTARAM AUTOMATICAMENTE A POSIÇAO INICIAL
COM UMA VELOCIDADE MAIOR PARA SE UNIREM MAIS RAPIDO
É QUASE COMO A CENA QUE O STIPP FEZ
SÓ QUE COMO O VIDEO SUGERE
NO CASO EU AXO QUE NÃO PRECISARIA DE UMA RIGIDBODY 2D
JÁ QUE ELE IRIA SE MOVIMENTAR APENAS NO EIXO X
danyllo106- Avançado
- PONTOS : 3526
REPUTAÇÃO : 7
Idade : 27
Respeito as regras :
Re: Sistema de atração e repulsao
No primeiro caso, basta dar um AddForce para algum sentido aleatório ou para um lado oposto a captura de um raycast por exemplo... pode utilizar AddTorque também para fazer rodar para alguma direção ( eh necessário o uso de Rigidbody).
No segundo caso, basta utilizar um Vector3.Lerp ou Slerp, para fazer o movimento da posição atual até a posição inicial do objeto.
No segundo caso, basta utilizar um Vector3.Lerp ou Slerp, para fazer o movimento da posição atual até a posição inicial do objeto.
Re: Sistema de atração e repulsao
NO CASO O STIPP CRIOU ESSE SCRIPT:
COMO FICARIA O SCRIPT DA MANEIRA QUE VOCÊ DISSE?
- Código:
using UnityEngine;
using System.Collections;
public class Repulsao : MonoBehaviour {
public float repulsao = 3.0f;
public GameObject objeto1;
public GameObject objeto2;
public void Start(){
}
void Update () {
if(Input.GetKeyDown(KeyCode.Space)){
objeto1.transform.GetComponent<Rigidbody2D>().velocity = new Vector2(-repulsao, 3);
Vector3 euler1 = objeto1.transform.eulerAngles;
euler1.z = Random.Range(0.0f, 360.0f);
objeto1.transform.Rotate(euler1);
objeto2.transform.GetComponent<Rigidbody2D>().velocity = new Vector2(repulsao, 3);
Vector3 euler2 = objeto2.transform.eulerAngles;
euler2.z = Random.Range(0.0f, 360.0f);
objeto2.transform.Rotate(euler2);
}
}
}
COMO FICARIA O SCRIPT DA MANEIRA QUE VOCÊ DISSE?
danyllo106- Avançado
- PONTOS : 3526
REPUTAÇÃO : 7
Idade : 27
Respeito as regras :
Re: Sistema de atração e repulsao
Cara, não sei se vai funcionar... Não testei, más da uma olhada
- Código:
using UnityEngine;
using System.Collections;
public class Repulsao : MonoBehaviour {
public float repulsao = 3.0f;
public GameObject objeto1;
public GameObject objeto2;
private Vector2 posicInicObj1,posicInicObj2;
private bool retornar;
void Start(){
posicInicObj1 = objeto1.transform.position;
posicInicObj2 = objeto2.transform.position;
retornar = false;
}
void Update () {
if(Input.GetKeyDown(KeyCode.Space)){
retornar = !retornar;
if (retornar == false) {
Vector2 randomDir1 = new Vector2 (Random.Range (-3, 0), Random.Range (-2, 2));
objeto1.transform.GetComponent<Rigidbody2D> ().AddForce (randomDir1, ForceMode2D.Impulse);
objeto1.transform.GetComponent<Rigidbody2D> ().AddTorque (Random.Range (0, 10));
Vector2 randomDir2 = new Vector2 (Random.Range (0, 3), Random.Range (-2, 2));
objeto1.transform.GetComponent<Rigidbody2D> ().AddForce (randomDir2, ForceMode2D.Impulse);
objeto1.transform.GetComponent<Rigidbody2D> ().AddTorque (Random.Range (-10, 0));
}
}
if (retornar == true) {
objeto1.transform.position = Vector2.Lerp (transform.position, posicInicObj1, Time.deltaTime);
objeto2.transform.position = Vector2.Lerp (transform.position, posicInicObj2, Time.deltaTime);
}
}
}
Tópicos semelhantes
» Meu personagem está tomando repulsão da parede
» Como criar sistema de Habilidades (Skills) para o personagem 2D / e sistema de batalha 2D
» como fazer sistema de partículas apagar outro sistema de partículas
» Posso usar o sistema de marcas de derrapagem como base para outro sistema?
» Qual o melhor sistema sistema de anuncios para android?
» Como criar sistema de Habilidades (Skills) para o personagem 2D / e sistema de batalha 2D
» como fazer sistema de partículas apagar outro sistema de partículas
» Posso usar o sistema de marcas de derrapagem como base para outro sistema?
» Qual o melhor sistema sistema de anuncios para android?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos