Показать сообщение отдельно
Старый 16.02.2013, 23:46   #1362
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Сообщение от pax Посмотреть сообщение
Попробуй посмотреть вот этот пример http://wiki.unity3d.com/index.php?title=ArcBall
Что-то не понял как тот пример работает, но мой код работает хорошо.
public class Trackball : MonoBehaviour {
	void Update () {
		if(Input.GetMouseButton(1)) {
			float screenSize = Mathf.Max(Screen.width, Screen.height);
			float tx = (Input.mousePosition.x-Screen.width/2)/screenSize * 2;
			float ty = (Input.mousePosition.y-Screen.height/2)/screenSize * 2;
			
			tx = Mathf.Clamp(tx, -1, 1);
			ty = Mathf.Clamp(ty, -1, 1);
			
			
			Vector3 lever = new Vector3(tx, ty, 0);
			lever.z = -Mathf.Clamp01(1-lever.magnitude);
			lever.Normalize();
			
			Vector3 delta = new Vector3(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));
			
			Vector3 axis = Vector3.Cross(lever, delta);
			axis = Camera.mainCamera.transform.TransformDirection(axis);
			transform.Rotate(axis, delta.magnitude*5, Space.World);
			
			Debug.DrawLine(transform.position, transform.position+lever, Color.green);
		}
	}
}
(Offline)
 
Ответить с цитированием