Chủ Nhật, 1 tháng 12, 2013

Cookbook - XOAY GÓC NHÌN CAMERA QUANH VẬT THỂ

 
  - Xoay góc nhìn quanh vật thể -

Như các bạn thường thấy ở những trang bán điện thoại online, các mặt hàng được trưng bày sẽ có một số hình 3 chiều để các bạn có thể nhìn thấy toàn diện chiếc điện thoại mà bạn ưng ý nhất. Bài viết này mình sẽ hướng dẫn các bạn tạo ra hiệu ứng xoay góc nhìn của camera một quanh vật thể như chức năng đã trình bày ở trên.

Chuẩn bị
Mobile.unitypackage

Cách để làm

B1. Nhấp phải vào vùng trống trong thẻ Project và chọn Import Package | Custom Package và Import file Mobile vừa tải ở link trên. Double click vào scene Xoay_Camera_Scene.






B2. Tại thẻ Project, nhấp chọn nút Creat | Java Script và đặt tên là InspectCamera.

B3. Double click vào file C# vừa tạo và chèn đoạn code sau vào:

var target : Transform;
var distance = 10.0;

var xSpeed = 250.0;
var ySpeed = 120.0;

var yMinLimit = -20;
var yMaxLimit = 80;

private var x = 0.0;
private var y = 0.0;

@script AddComponentMenu("Camera-Control/Inspect Camera")
var zoomInLimit = 2.0;
var zoomOutLimit = 1.0;
private var initialFOV : float;

function Start () {
    initialFOV = camera.fieldOfView;
    transform.position = new Vector3(0.0f, 0.0f, -distance) + target.position;    
    var angles = transform.eulerAngles;
    x = angles.y;
    y = angles.x;

    // Make the rigid body not change rotation
       if (rigidbody)
        rigidbody.freezeRotation = true;
}

function LateUpdate () {
   if (target && Input.GetMouseButton(0)) {
    if(Input.GetKey(KeyCode.RightShift) || Input.GetKey(KeyCode.LeftShift)){
       var zoom = camera.fieldOfView - Input.GetAxis ("Mouse Y");
      if(zoom >= initialFOV / zoomInLimit && zoom <= initialFOV / zoomOutLimit){
          camera.fieldOfView -= Input.GetAxis ("Mouse Y");
   }        
     } else {
      x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
        y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
             }
     y = ClampAngle(y, yMinLimit, yMaxLimit);
     var rotation = Quaternion.Euler(y, x, 0);
     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);
}

B4. Kéo thả file Java Script này vào Main Camera ở thẻ Project.

B5. Nhấp chọn Main Camera, qua thẻ Inspector, nhấp chuột vào nút tròn cuối dòng Target của InspectCamera (Script) và chọn mobile.



B6. Nhấp nút Play để kiểm tra thành quả. Bạn có thể giữ chuột và kéo ra các hướng để xoay góc nhìn. Nhấn Shift và kéo thả chuột để phóng to / thu nhỏ góc nhìn.

Không có nhận xét nào:

Đăng nhận xét