Quantcast
Channel: Questions in topic: "help me"
Viewing all articles
Browse latest Browse all 115

Need help to limit the range of where I can open the door.

$
0
0
Hello I have been using the ShadowDemoscript and have made it possible to open doors like in Amnesia but with the difference that I open and closes the door by holding down the F key. The problem is that there is no limit of how far I can be from the door, is the mouse at the door and I hold down F it opens. How can I solve this. I might add that I am really new and don't know how to program in Java, just have guessed basic where to change funtions . The script I use. var spring = 50.0; var damper = 5.0; var drag = 10.0; var angularDrag = 5.0; var distance = 0.2; var pushForce = 0.2; var attachToCenterOfMass = false; var highlightMaterial : Material; private var highlightObject : GameObject; private var springJoint : SpringJoint; function Update() { var mainCamera = FindCamera(); highlightObject = null; if( springJoint != null && springJoint.connectedBody != null ) { highlightObject = springJoint.connectedBody.gameObject; } else { // We need to actually hit an object var hitt : RaycastHit; if( Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition), hitt, 100 ) ) { if( hitt.rigidbody && !hitt.rigidbody.isKinematic ) { highlightObject = hitt.rigidbody.gameObject; } } } // Make sure the user pressed the mouse down if (!Input.GetKey(KeyCode.F)) return; // We need to actually hit an object var hit : RaycastHit; if (!Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition), hit, 100)) { return; } // We need to hit a rigidbody that is not kinematic if (!hit.rigidbody || hit.rigidbody.isKinematic) { return; } if (!springJoint) { var go = new GameObject("Rigidbody dragger"); body = go.AddComponent ("Rigidbody"); springJoint = go.AddComponent ("SpringJoint"); body.isKinematic = true; } springJoint.transform.position = hit.point; if (attachToCenterOfMass) { var anchor = transform.TransformDirection(hit.rigidbody.centerOfMass) + hit.rigidbody.transform.position; anchor = springJoint.transform.InverseTransformPoint(anchor); springJoint.anchor = anchor; } else { springJoint.anchor = Vector3.zero; } springJoint.spring = spring; springJoint.damper = damper; springJoint.maxDistance = distance; springJoint.connectedBody = hit.rigidbody; DragObject(hit.distance, hit.point, mainCamera.ScreenPointToRay(Input.mousePosition).direction); } function DragObject (distance : float, hitpoint : Vector3, dir : Vector3) { var startTime = Time.time; var mousePos = Input.mousePosition; var oldDrag = springJoint.connectedBody.drag; var oldAngularDrag = springJoint.connectedBody.angularDrag; springJoint.connectedBody.drag = drag; springJoint.connectedBody.angularDrag = angularDrag; var mainCamera = FindCamera(); while (Input.GetKey(KeyCode.F)) { var ray = mainCamera.ScreenPointToRay (Input.mousePosition); springJoint.transform.position = ray.GetPoint(distance); yield; } if (Mathf.Abs(mousePos.x - Input.mousePosition.x) <= 2 && Mathf.Abs(mousePos.y - Input.mousePosition.y) <= 2 && Time.time - startTime < .2 && springJoint.connectedBody) { dir.y = 0; dir.Normalize(); springJoint.connectedBody.AddForceAtPosition(dir * pushForce, hitpoint, ForceMode.VelocityChange); ToggleLight( springJoint.connectedBody.gameObject ); } if (springJoint.connectedBody) { springJoint.connectedBody.drag = oldDrag; springJoint.connectedBody.angularDrag = oldAngularDrag; springJoint.connectedBody = null; } } static function ToggleLight( go : GameObject ) { var theLight : Light = go.GetComponentInChildren(Light); if( !theLight ) return; theLight.enabled = !theLight.enabled; var illumOn = theLight.enabled; var renderers = go.GetComponentsInChildren(MeshRenderer); for( var r : MeshRenderer in renderers ) { if( r.gameObject.layer == 1 ) { r.material.shader = Shader.Find(illumOn ? "Self-Illumin/Diffuse" : "Diffuse"); } } } function FindCamera () { if (camera) return camera; else return Camera.main; } function OnPostRender() { if( highlightObject == null ) return; var go = highlightObject; highlightMaterial.SetPass( 0 ); var meshes = go.GetComponentsInChildren(MeshFilter); for( var m : MeshFilter in meshes ) { Graphics.DrawMeshNow( m.sharedMesh, m.transform.position, m.transform.rotation ); } }

Viewing all articles
Browse latest Browse all 115

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>