20 декабря 2013 в 11:00
Камера от 3го лица для unity3d в WOW-ММО стиле

Итак, ниже представлен JavaScript код камеры с зумом и проверкой столкновений, который я нашел в официальном вики и сделал пару простых правок.
Результаты:
-камера всегда следует за игроком на нужном расстоянии.
-движение камеры (для просмотра по сторонам) происходит только тогда, когда вы держите нажатой правую кнопку мыши.
-курсор мыши скрывается при нажатой правой кнопки мыши, когда просмотр по сторонам активируется, в противном случае, курсор отобразится. Курсор отображается после релиза приложения автоматически.
//MMOStyleCamera.js var target : Transform; var distance = 10.0; var xSpeed = 250.0; var ySpeed = 120.0; var yMinLimit = -20; var yMaxLimit = 80; var distanceMin = 3; var distanceMax = 15; private var x = 0.0; private var y = 0.0; @script AddComponentMenu("Camera-Control/Mouse Orbit") function Start () { var angles = transform.eulerAngles; x = angles.y; y = angles.x; if (rigidbody) { rigidbody.freezeRotation = false; } } function LateUpdate () { if (target) { if(Input.GetKey("mouse 1")) { Screen.showCursor = false; x += Input.GetAxis("Mouse X") * xSpeed * distance* 0.02; y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02; } else { Screen.showCursor = true; } y = ClampAngle(y, yMinLimit, yMaxLimit); var rotation = Quaternion.Euler(y, x, 0); distance = Mathf.Clamp(distance - Input.GetAxis("Mouse ScrollWheel")*5, distanceMin, distanceMax); var hit : RaycastHit; if (Physics.Linecast (target.position, transform.position, hit)) { distance -= hit.distance; } var position = rotation * Vector3(0.0, 0.0, -distance) + target.position; transform.rotation = rotation; transform.position = position; } } static function ClampAngle (angle : float, min : float, max : float) { if (angle<-360) { angle+= 360; } if (angle>360) { angle-=360; } return Mathf.Clamp (angle, min, max); }
комментарии отсутствуют
авторизуйтесь