roguelike2d 摄像机参数设置
2015-12-20 21:44
519 查看
基于回合制的、基于瓦片地图的、roguelike的2d的scavenger游戏项目,其中摄像机的设置参数值在视频教程中并没有说明如何计算出来的。Hoxily尝试修改棋盘的rows和columns值的时候,游戏画面就不对了。
首先设置摄像机的目标是将棋盘恰好不漏包含在游戏画面中。
然后注意到资源中的sprite导入参数是32像素每单位长度,每个sprite恰好是1个单位的长与宽。
摄像机处于orthographics正投影时,Size参数控制的是摄像机的一半高度。而摄像机的宽度则由屏幕的宽高比和摄像机的高度两个因素确定。
sprite的transform.position是该sprite的正中位置。
因此计算摄像机参数过程如下:
首先设置摄像机的目标是将棋盘恰好不漏包含在游戏画面中。
然后注意到资源中的sprite导入参数是32像素每单位长度,每个sprite恰好是1个单位的长与宽。
摄像机处于orthographics正投影时,Size参数控制的是摄像机的一半高度。而摄像机的宽度则由屏幕的宽高比和摄像机的高度两个因素确定。
sprite的transform.position是该sprite的正中位置。
因此计算摄像机参数过程如下:
using UnityEngine; using System.Collections; [RequireComponent(typeof(Camera))] public class CameraManager : MonoBehaviour { private Camera _camera; void Awake () { _camera = GetComponent<Camera> (); } /// <summary> /// 根据棋盘的大小,自动计算出相机的orthographicsSize,以及transform位置 /// </summary> /// <param name="columns">Columns.</param> /// <param name="rows">Rows.</param> public void SetupCamera (int columns, int rows) { float boardHeight = rows + 2; float boardWidth = columns + 2; float boardAspectRatio = boardWidth / boardHeight; float screenAspectRatio = (float)Screen.width / (float)Screen.height; if (boardAspectRatio <= screenAspectRatio) { // black strip at left and right // orthographicsSize * 2 == boardHeight _camera.orthographicSize = boardHeight / 2f; } else { // black strip at up and down // orthographicsSize * 2 * screenRation == boardWidth _camera.orthographicSize = boardWidth / screenAspectRatio / 2f; } float x = Center (-1f, -1f + boardWidth) - 0.5f; float y = Center (-1f, -1f + boardHeight) - 0.5f; float z = transform.position.z; transform.position = new Vector3 (x, y, z); } float Center (float min, float max) { return (min + max) / 2f; } }
相关文章推荐
- Kinect结合Unity3D引擎开发体感游戏(一)
- camera录制视频的缩略图获取原理心得分享
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D动态对象优化代码分享
- android系统在静音模式下关闭camera拍照声音的方法
- Unity3D获取当前键盘按键及Unity3D鼠标、键盘的基本操作
- Unity3d获取系统时间
- Android变形(Transform)之Camera使用介绍
- Android编程中调用Camera时预览画面有旋转问题的解决方法
- android之camera用法实例详解
- Android Camera是否支持变焦的判断方法总结
- unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk)
- Unity3D游戏引擎实现在Android中打开WebView的实例
- unity3d调用手机或电脑摄像头
- Unity3d发布IOS9应用时出现中文乱码的解决方法
- 分享一个开源的网络游戏服务器架构—HouHai
- Camera Framework学习笔记(1)
- Unity3D插件详细评测及教学下载