Determinar si el mouse está en el área especificada de la pantalla en unity3d
DragRigidbody.js
var resorte = 50.0
var amortiguador = 5.0
var arrastre = 10.0;
var angularDrag = 5.0
var distancia = 0.2;
var adjuntoToCenterOfMass = false
Var privada junta de resorte: junta de resorte;
Función Update()
{
//Asegúrate de que el usuario presionó el mouse
if (! Input. GetMouseButtonDown (0))
Return;
var main camera = find camera();
//Necesitamos golpear un objeto
var hit: RaycastHit;
if(!Physics.Raycast(MainCamera.ScreenPointToRay(input.mouseposition),hit,100))
Return;
//Necesitamos encontrar un cuerpo rígido no cinemático
Si (! golpea . cuerpo rígido | | golpea . cuerpo rígido . es cinemático)
Regresa;
Si ( ! Junta de resorte )
{
var go = new GameObject("Rigidbody Drag");
var body: Rigidbody = go. AddComponent("cuerpo rígido") as cuerpo rígido;
springJoint = go. agregar componente(" articulación de resorte ");
body.isKinematic = true
}
posición de articulación de resorte = punto de impacto; >
if (attachToCenterOfMass)
{
var anclaje = conversión.
transformar dirección (golpe. cuerpo rígido. centro de masa) golpear. cuerpo rígido. transformar posición;
anclaje = unión de resorte. = ancla
}
Otro
{
unión de resorte .ancla = vector cero;
}
springJoint.spring = resorte
springJoint.damper = amortiguador;
springJoint.maxDistance = distancia
articulación de resorte. cuerpo = hit . cuerpo rígido;
StartCoroutine ("DragObject ", hit . distancia);
}
Función DragObject(distancia: flotar)
{
var old drag = junta de resorte . cuerpo conectado .
var oldAngularDrag = junta de resorte . articulación cuerpo conectado arrastre = arrastre;
articulación de resorte cuerpo conectado arrastre = arrastre angular;
var cámara principal = encontrar cámara();
while(input.GetMouseButton(0))
{
var ray = cámara principal. ScreenPointToRay(entrada . posición del mouse);
transformación de articulación de resorte = rayo. GetPoint(distancia);
Salida;
}
if (springJoint.connectedBody)
{
junta de resorte cuerpo conectado. drag = arrastre antiguo;
cuerpo conectado de resorte = oldAngularDrag;
cuerpo conectado de resorte = nulo. }
}
Función FindCamera()
{
IF (cámara)
Devuelve la cámara;
Otros
Volver a Camera.main
}
"Programming Memoirs" tiene una historia de ocho años y es una red en línea propiedad de por las instituciones de formación del equipo técnico. Actualmente se han matriculado trece asignaturas que involucran desarrollo de Internet, desarrollo de software y desarrollo de juegos (desarrollo de realidad virtual).
Now Programming Memoir Unity3D es el único videotutorial a gran escala serializado en chino en China. La explicación de base cero es fácil de entender y apunta al combate práctico, y ha sido bien recibida por muchos internautas.