- Home /
Question by
mikhailovic · Apr 18, 2015 at 08:43 PM ·
rigidbodydraggingjittery
My dragrigidbodies script makes the carried object jittery
Hello guys, i have this script that i did not write myself although i have modified it equally much. It was originally in c# but i converted it to Java. It works perfectly except that when im holding an object still its going back and forth and its jittering in the same place. You guys have any ideas on this?
Heres the code, feel free to use it both for helping me and own use:
var drag : boolean = false;
var dragH : boolean = false;
private var cam : Transform;
private var dragMark : Transform;
private var startSpeed : float;
private var rigid : Rigidbody;
private var mainCamera : GameObject;
function Start ()
{
if (GameObject.Find ("DragMark"))
dragMark = GameObject.Find ("DragMark").transform;
if (Camera.main != null)
cam = Camera.main.transform;
startSpeed = speed;
}
function Update ()
{
if (dragMark == null || camera == null)
return;
var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);
var hit : RaycastHit;
if (Input.GetMouseButtonDown(0))
{
if (Physics.Raycast (ray, hit, Mathf.Infinity))
{
if (hit.collider.gameObject.tag == "DragLight" && hit.distance <= maxDistance)
{
if (hit.collider.rigidbody != null)
{
rigid = hit.collider.rigidbody;
dragMark.position = rigid.position;
drag = true;
}
}
if (hit.collider.gameObject.tag == "DragHeavy" && hit.distance <= maxDistance)
{
//GetComponent(MouseLook).enabled = false;
//mainCamera.GetComponent(MouseLook).enabled = false;
if (hit.collider.rigidbody != null)
{
rigid = hit.collider.rigidbody;
dragMark.position = rigid.position;
rigid.constraints = RigidbodyConstraints.FreezePositionY | RigidbodyConstraints.FreezeRotation;
dragH = true;
}
}
}
}
if (drag == true && rigid)
{
if (Input.GetMouseButtonUp(1) && rigid)
{
rigid.rigidbody.AddForce (transform.forward * 1000);
rigid.constraints = RigidbodyConstraints.None;
drag = false;
}
}
if (Input.GetMouseButtonUp (0) && rigid)
{
rigid.constraints = RigidbodyConstraints.None;
drag = false;
dragH = false;
}
if (rigid == null || dragH == false && drag == false)
return;
var dis : float = Vector3.Distance (dragMark.position, rigid.position);
dis = Mathf.Clamp (dis, 0, 3);
speed = startSpeed * dis / rigid.rigidbody.mass;
var direction : Vector3 = (dragMark.position - rigid.position).normalized;
rigid.velocity = direction * speed;
var disH : float = Vector3.Distance (dragMark.position, rigid.position);
disH = Mathf.Clamp (disH, 0, 3);
speedH = startSpeed * disH / rigid.rigidbody.mass;
var directionH : Vector3 = (dragMark.position - rigid.position).normalized;
rigid.velocity = directionH * speedH;
}
Comment
Your answer
Follow this Question
Related Questions
Character Controller movement jittery while standing on a rigidbody 1 Answer
moving objects in like in amnesia 8 Answers
[WILLING TO EVEN PAY $] Working Dragging objects/doors like in Amnesia, But Need Simple FIX 3 Answers
Drag Rigidbody that respects collisions. 1 Answer
Need a helping Hand: Dragging a rigidbody on touch move. 0 Answers