Rotating Blender object using mouse click

Dear all,

Apologies if this is a duplicated post. I just started on Unity.

I imported a Blender object and trying to rotate on x and y axis using mouse click. Essentially user click and hold the left button and can rotate the object horizontally and vertically. I manage to make it work with rotation however the rotation happening anywhere in the screen.

I want the rotation should happen only if user clicks and holds on the object.

This code is working perfectly if I add any GameObject like Cube from Unity, however not working for Blender objects.

Here is my code.

#pragma strict

var sensitivityX:float = 15;
var sensitivityY:float = 15;

var referenceCamera:Transform;

function Start() {

	initialColor = renderer.material.color;	
	
	if (!referenceCamera) {
		if (!Camera.main) {
Debug.LogError("No Camera with 'Main Camera' as its tag was found. Please either assign a Camera to this script, or change a Camera's tag to 'Main Camera'.");
			Destroy(this);
			return;
		}
		referenceCamera = Camera.main.transform;
	}
}

function Update () {
	Debug.Log("CupMovementWithMouseClick Update");
	//Get how far the mouse has moved by using the Input.GetAxis().
	var rotationX:float = Input.GetAxis("Mouse X") * sensitivityX;
	var rotationY:float = Input.GetAxis("Mouse Y") * sensitivityY;

	//Rotate the object around the camera's "up" axis, and the camera's "right" axis.
	// Rotate when left mouse button hold.
	if(Input.GetButton ("Fire1")){
		Debug.Log("CupMovementWithMouseClick Fire1");				
		
		// Also only rotate when mouse actually touches the object.						
		if ( Input.GetMouseButtonDown(0)){
			Debug.Log("CLICKED");
			var hit:RaycastHit;
			var ray:Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
			if(Physics.Raycast(ray, hit, 100.0)) {
				Debug.Log("HIT!!");
				
			transform.RotateAroundLocal( referenceCamera.up, -Mathf.Deg2Rad * rotationX );
			transform.RotateAroundLocal( referenceCamera.right,  Mathf.Deg2Rad * rotationY );	
			}
		}
		        	        	        	    	    	    				
	}

}

Thanks Regards,
Ganesh Prakhya

I figured it out. I need to add BoxCollidor and Mesh Renderer to make it work! I did it! :slight_smile:

1 Like