I have a set of scripts that control a few elements of gameplay: One that sends a ray, and detects if it hit a 'node'. another that handles the rotations that gets called by the first
The first script:
//Get the RotationHandler Script and call function to execute on ray trigger
var hit : RaycastHit;
function Update () {
var ray : Ray = Camera.main.ScreenPointToRay(Vector3((Screen.width / 2),(Screen.height / 2)));
if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) {
if (Physics.Raycast (ray, hit, 10)) {
Debug.DrawLine (ray.origin, hit.point);
print("ray sent");
var otherObj : GameObject = hit.collider.gameObject;
/////////////////FIST NODE SET BLOCK/////////////////////////////////////////////////////////////////////////
//This look at the object with the miniNode Tag and then does shit to it.
if (otherObj.tag == "miniNode") {
print("ray hit the miniONENode Tag");
//Find the EXTERNAL mini and main node object and assign them to local variables
var miniNode = GameObject.FindWithTag("miniNode");
var mainNode = GameObject.FindWithTag("mainNode");
//Generate Glow
//appy the LEFT rotation to miniNode & mainNode rotationHandler when left click is pressed
if (Input.GetMouseButtonDown(0)){
miniNode.GetComponent(theRotator).RotateObject(miniNode.transform, Vector3.up*-90, .5);
mainNode.GetComponent(theRotator).RotateObject(mainNode.transform, Vector3.up*-90, .5);
}
//appy the RIGHT rotation to miniNode & mainNode rotationHandler when RIGHT click is pressed
if (Input.GetMouseButtonDown(1)){
miniNode.GetComponent(theRotator).RotateObject(miniNode.transform, Vector3.up*90, .5);
mainNode.GetComponent(theRotator).RotateObject(mainNode.transform, Vector3.up*90, .5);
}
}
} //End of the Ray if statement
}//End of the Mouse down (0,1) statement
}//End of the Update Function
Rotation Script:
private var rotating = false;
function RotateObject (thisTransform : Transform, degrees : Vector3, seconds : float) {
if (rotating) return;
rotating = true;
rotateSound();
var startRotation = thisTransform.rotation;
var endRotation = thisTransform.rotation * Quaternion.Euler(degrees);
var t = 0.0;
var rate = 1.0/seconds;
while (t < 1.0) {
t += Time.deltaTime * rate;
thisTransform.rotation = Quaternion.Slerp(startRotation, endRotation, Mathf.SmoothStep(0.0, 1.0, t));
yield;
}
rotating = false;
}
Im really confused on how to implement a bumper script so that when a node's mesh hits another it will simply reverse the rotation and not allow for an overlap of the meshes.
Images of setup and overlap:
http://img406.imageshack.us/img406/4430/screenshot20100415at110.png
http://img686.imageshack.us/img686/8551/screenshot20100415at110u.png