[TUTORIAL] Mover um Rigidbody com o mouse fazendo ele respeitar outros Rigidbody e suas massas
Página 1 de 1
[TUTORIAL] Mover um Rigidbody com o mouse fazendo ele respeitar outros Rigidbody e suas massas
Demorou, más com algumas referencias e trechos de scripts consegui montar isto:
Coloque este script no objeto que deseja arrastar com o mouse e voala,
você terá que ajustar as configuraçoes do seu rigidbody conforme a preferencia, massa, arrasto, etc.
Já deixei o script comentado nas partes principais para dar um melhor entendimento.
OBS: SE ESTIVER UTILIZANDO UNITY 5, USE O SCRIPT ABAIXO:
- Código:
//Nao se esqueça de alterar os valores das variaveis na aba inspector tambem caso for alterar algum valor.
private var estaArrastando : boolean = false;
private var PlanoDeArrasto : Plane;
private var moverPara : Vector3;
var AmortecerArrasto : float = 5.0; // altere aqui para deixar o arrasto mais suave
var AdicionarEmY : float = 5.0; // altere aqui para adicionar valor no eixo Y ao controlar o rigidbody
var VelocidadeMaxima : float = 5; // altere aqui a velocidade maxima de movimento do rigidbody
function Update(){
var ray : Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
var hit : RaycastHit;
var distancia : float;
if(Input.GetMouseButtonDown(0)){
if(Physics.Raycast(ray, hit)){
if(hit.transform.root.transform == transform){
estaArrastando = true;
rigidbody.useGravity = false;
PlanoDeArrasto = new Plane(Vector3.forward, transform.position + Vector3.up * AdicionarEmY); // troque Vector3.forward por Vector3.up se nao quiser que o rigidbody consiga descer
}
}
}
if(estaArrastando){
var hasHit = PlanoDeArrasto.Raycast(ray, distancia);
if(hasHit){
moverPara = ray.GetPoint(distancia);
}
}
if(Input.GetMouseButtonUp(0) && estaArrastando){
estaArrastando = false;
rigidbody.useGravity = true;
}
}
function FixedUpdate(){
if(!estaArrastando) return;
var velocity = moverPara - transform.position;
rigidbody.velocity = Vector3.Lerp(rigidbody.velocity, velocity, AmortecerArrasto * Time.deltaTime);
if(rigidbody.velocity.magnitude > VelocidadeMaxima){
rigidbody.velocity = rigidbody.velocity.normalized * VelocidadeMaxima;
}
}
@script RequireComponent(Rigidbody)
Coloque este script no objeto que deseja arrastar com o mouse e voala,
você terá que ajustar as configuraçoes do seu rigidbody conforme a preferencia, massa, arrasto, etc.
Já deixei o script comentado nas partes principais para dar um melhor entendimento.
OBS: SE ESTIVER UTILIZANDO UNITY 5, USE O SCRIPT ABAIXO:
- Código:
private var estaArrastando : boolean = false;
private var PlanoDeArrasto : Plane;
private var moverPara : Vector3;
var AmortecerArrasto : float = 5.0; // altere aqui para deixar o arrasto mais suave
var AdicionarEmY : float = 5.0; // altere aqui para adicionar valor no eixo Y ao controlar o rigidbody
var VelocidadeMaxima : float = 5; // altere aqui a velocidade maxima de movimento do rigidbody
function Update(){
var ray : Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
var hit : RaycastHit;
var distancia : float;
if(Input.GetMouseButtonDown(0)){
if(Physics.Raycast(ray, hit)){
if(hit.transform.root.transform == transform){
estaArrastando = true;
GetComponent.<Rigidbody>().useGravity = false;
PlanoDeArrasto = new Plane(Vector3.forward, transform.position + Vector3.up * AdicionarEmY); // troque Vector3.forward por Vector3.up se nao quiser que o rigidbody consiga descer
}
}
}
if(estaArrastando){
var hasHit = PlanoDeArrasto.Raycast(ray, distancia);
if(hasHit){
moverPara = ray.GetPoint(distancia);
}
}
if(Input.GetMouseButtonUp(0) && estaArrastando){
estaArrastando = false;
GetComponent.<Rigidbody>().useGravity = true;
}
}
function FixedUpdate(){
if(!estaArrastando) return;
var velocity = moverPara - transform.position;
GetComponent.<Rigidbody>().velocity = Vector3.Lerp(GetComponent.<Rigidbody>().velocity, velocity, AmortecerArrasto * Time.deltaTime);
if(GetComponent.<Rigidbody>().velocity.magnitude > VelocidadeMaxima){
GetComponent.<Rigidbody>().velocity = GetComponent.<Rigidbody>().velocity.normalized * VelocidadeMaxima;
}
}
@script RequireComponent(Rigidbody)
Tópicos semelhantes
» [TUTORIAL] Mover um Rigidbody com TOUCH
» [TUTORIAL] Mover objetos com o mouse, estilo Amnesia
» [TUTORIAL] Mover, arremessar e girar objetos com o mouse
» [TUTORIAL] Mover Objeto para lugar do click do Mouse
» [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
» [TUTORIAL] Mover objetos com o mouse, estilo Amnesia
» [TUTORIAL] Mover, arremessar e girar objetos com o mouse
» [TUTORIAL] Mover Objeto para lugar do click do Mouse
» [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos