Ok, here is my sources ( I don’t post all variables declarations) just ObjB it’s mycube
private var mycube:GameObject = null;
function Start ()
{
mycube = GameObject.Find(‘Cube’);
}
function OnMouseUp(){
isMouseDown = false;
}
function OnMouseDown(){
old_rotations = transform.rotation.eulerAngles.z;
var screenPos_OLD:Vector3 = Camera.allCameras[1].WorldToScreenPoint(transform.position);
var deltaX_OLD:float = Input.mousePosition.x - screenPos_OLD.x;
var deltaY_OLD:float = Input.mousePosition.y - screenPos_OLD.y;
var radians_OLD:float = Mathf.Atan2( deltaY_OLD, deltaX_OLD);
degress_OLD = (radians_OLD * 180 ) / Mathf.PI;
isMouseDown = true;
}
function OnMouseDrag (){
if ( isMouseDown ) {
var screenPos_NEW:Vector3 = Camera.allCameras[1].WorldToScreenPoint(transform.position);
var deltaX_NEW:float = Input.mousePosition.x - screenPos_NEW.x;
var deltaY_NEW:float = Input.mousePosition.y - screenPos_NEW.y;
var radians_NEW:float = Mathf.Atan2( deltaY_NEW, deltaX_NEW);
var degress_NEW:float = (radians_NEW * 180 ) / Mathf.PI;
var delta_angles:float = degress_NEW - degress_OLD;
var targetAngle : float = old_rotations - delta_angles;
transform.rotation = Quaternion.Euler(0,180, targetAngle);
rudder_angle= transform.eulerAngles.z;
mycube.transform.rotation = Quaternion.Euler ( 0, rudder_angle, 0 );
}
}
Last lines it’s angles from 0 to 360 of rudder and mycube it’s another object. For example - boat.
when my rudder goes from 360 to 0 - by boat stops on 180 and than resets to 0 again I will use this rudder_angle= transform.eulerAngles.z / 2;
what about addeding on OnMouseDrag I don’t know. When mouse down it’s work as Update each frame (
please help.
I’m not Unity3D developer, I convert this code from Flash ActionScript 3.0, where I’m more brained )
In AS3 I done this in a few minutes because there don’t unsed any Euler angles ((((