- Phóng to góc nhìn của camera - |
Bài viết này mình sẽ hướng dẫn các bạn tạo chức năng phóng to góc nhìn của camera bằng một cú click chuột. Chức năng này rất hữu dụng cho các sniper (xạ thủ) trong các game bắn súng sử dụng súng nhắm từ xa.
Chuẩn bị
Terrain
Cách để làm
B1. Nhấp phải vào thẻ Project và chọn Import Package | Custom Package rồi Open file Terrain vừa tải. Double click vào scene Demo mình đã tạo sẵn các đối tượng phụ để tiện sử dụng.
B2. Tiếp tục nhấp phải vào thẻ Project và chọn Creat | C# Script và đặt tên là TelescopicView.
B3. Double click vào file C# vừa tạo và chèn đoạn code sau vào:
using UnityEngine;
using System.Collections;
public class TelescopicView : MonoBehaviour{
public float ZoomLevel = 2.0f;
public float ZoomInSpeed = 100.0f;
public float ZoomOutSpeed = 100.0f;
private float initFOV;
//private Vignetting vignette;
//public float vignetteAmount = 10.0f;
void Start(){
initFOV = Camera.main.fieldOfView; //vignette = this.GetComponent("Vignetting") as Vignetting;
}
void Update(){
if (Input.GetKey(KeyCode.Mouse0)){
ZoomView();
}else{
ZoomOut();
}
}
void ZoomView(){
if (Mathf.Abs(Camera.main.fieldOfView - (initFOV / ZoomLevel)) < 0.5f){
Camera.main.fieldOfView = initFOV / ZoomLevel;
// vignette. intensity = vignetteAmount;
}else if (Camera.main.fieldOfView - (Time.deltaTime * ZoomInSpeed) >= (initFOV / ZoomLevel)){
Camera.main.fieldOfView -= (Time.deltaTime * ZoomInSpeed);
// vignette. intensity = vignetteAmount * (Camera.main.fieldOfView - initFOV)/((initFOV / ZoomLevel) - initFOV);
}
}
void ZoomOut(){
if (Mathf.Abs(Camera.main.fieldOfView - initFOV) < 0.5f){
Camera.main.fieldOfView = initFOV;
// vignette. intensity = 0;
}else if (Camera.main.fieldOfView + (Time.deltaTime * ZoomOutSpeed) <= initFOV){
Camera.main.fieldOfView += (Time.deltaTime * ZoomOutSpeed);
//vignette.intensity = vignetteAmount * (Camera.main.fieldOfView - initFOV)/((initFOV / ZoomLevel) - initFOV);
}
}
}
B4. Kéo thả file C# Script vừa tạo vào Main Camera ở thẻ Hierarchy.
B5. Nhấn nút Play để kiểm tra thành quả. Bạn có thể nhấp và giữ chuột trái để phóng to góc nhìn.
B6 (Pro only). Nếu bạn đang sử dụng Unity3D phiên bản pro bạn có thể dừng game bằng cách ấn tiếp vào nút play để hủy bỏ chế độ đang chơi và tiếp tục thực hiện các bước tiếp theo.
B7 (Pro only). Nhấp phải vào thẻ Project và chọn Import Package | Image Effects (Pro only).
B8 (Pro only). Nhấp chuột chọn Main Camera và vào Component | Image Effects | Camera | Vignette.
B9 (Pro only). Mở lại file C# Telescopic View và nhấp chuột vào các dòng comment (những dòng có // ở đầu) và ấn tổ hợp phím Ctrl + Alt + C để xóa dấu comment nên chương trình mới có thể thực hiện các lệnh này được.
B10 (Pro only). Nhấp nút Play để kiểm tra thành quả. Lúc này, bạn sẽ có thêm hiệu ứng độ tối ở góc ảnh khi phóng to góc nhìn.
Bạn ơi đoạn code của bài này sao ko có vậy
ReplyDeleteBài viết này mình viết cẩu thả quá. Mong bạn thông cảm, mình sẽ fix lại :D
DeleteRất cám ơn bạn đã góp ý!!