1、实现相机跟随主角运动

  一种简单的方法是把Camera直接拖到Player下面作为Player的子物体,另一种方法是取得Camera与Player的偏移向量,并据此设置Camera位置,便能实现简单的相机跟随了。

  这里我们选取第二种方法,首先给Camera添加一个脚本,取名为FollowPlayer,脚本很简单不做说明了 

 public class FollowPlayer : MonoBehaviour {

         private Transform player;
private Vector3 offsetPosition; // Use this for initialization
void Start () {
player = GameObject.FindGameObjectWithTag(“Player”).transform;
offsetPosition = transform.position - player.position;
transform.LookAt(player.position);
} // Update is called once per frame
void Update () {
transform.position = offsetPosition + player.position; }

2、视野的缩放

  鼠标滚轮向前拉近视野,向后视野变远。原理是设置一个变量distance为偏移向量的模,鼠标滚轮滑动改变distance的值,然后根据distance设置Camera的位置

  其中scrollSpeed为定义的一个float变量用于调整缩放的速度

 private float distance;

 private void ScrollView()
{
distance = offsetPosition.magnitude;
//向前滑动拉近 向后滑动拉远
distance -= Input.GetAxis("Mouse ScrollWheel") * scrollSpeed;
distance = Mathf.Clamp(distance, MinDistance, MaxDistance);
offsetPosition = offsetPosition.normalized * distance;
} //然后在Update里面调用ScrollView方法

3、视野旋转

  采用transform.RotateAround方法,让Camera根据Player的位置旋转

  

 private void RotateView()
{
//鼠标右键按下可以旋转视野
if (Input.GetMouseButtonDown())
isRotating = true;
if (Input.GetMouseButtonUp())
isRotating = false; if (isRotating)
{
Vector3 originalPosition = transform.position;
Quaternion originalRotation = transform.rotation;
transform.RotateAround(player.position, player.up, rotateSpeed * Input.GetAxis("Mouse X"));
transform.RotateAround(player.position, transform.right, -rotateSpeed * Input.GetAxis("Mouse Y"));
float x = transform.eulerAngles.x;
//旋转的范围为10度到80度
if (x < || x > )
{
transform.position = originalPosition;
transform.rotation = originalRotation;
} } offsetPosition = transform.position - player.position;
}

unity3d简单的相机跟随及视野旋转缩放的更多相关文章

  1. Unity中几种简单的相机跟随

    #unity中相机追随 固定相机跟随,这种相机有一个参考对象,它会保持与该参考对象固定的位置,跟随改参考对象发生移动 using UnityEngine; using System.Collectio ...

  2. unity3D:游戏分解之角色移动和相机跟随

          游戏中,我们经常会有这样的操作,点击场景中某个位置,角色自动移动到那个位置,同时角色一直是朝向那个位置移动的,而且相机也会一直跟着角色移动.有些游戏,鼠标滑动屏幕,相机就会围绕角色旋转. ...

  3. Unity 3d 实现物体跟随摄像机视野运动

    https://blog.csdn.net/qq_31411825/article/details/61623857 Unity 3d 实现物体跟随摄像机视野运动Created by miccall ...

  4. [Android] 实现简单的相机程序

    好久没写了,有些东西做过都快忘了,赶紧记一下. 现在来实现一个简单的相机程序. 原文地址http://www.cnblogs.com/rossoneri/p/4246134.html 当然需要的话可以 ...

  5. unity 常用的几种相机跟随

    固定相机跟随 这种相机有一个参考对象,它会保持与该参考对象固定的位置,跟随改参考对象发生移动 using UnityEngine; using System.Collections; public c ...

  6. Unity相机跟随

    固定相机跟随 这种相机有一个参考对象,它会保持与该参考对象固定的位置,跟随改参考对象发生移动 using UnityEngine; using System.Collections; public c ...

  7. Threejs【坐标转换】如何让annotation跟随物体一起旋转

    现在根据鼠标点击的屏幕位置能够得到屏幕的坐标event.clientX和event.clientY,然后我的annotation就初始化在这个屏幕坐标的位置,那么如何绑定annotation和三维物体 ...

  8. MMORPG中的相机跟随算法

    先上代码 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Cam ...

  9. unity相机跟随Player常用方式

    固定跟随,无效果(意义不大) public class FollowPlayer : MonoBehaviour { public Transform Player; private Vector3 ...

随机推荐

  1. Libevent使用样例,从简单到复杂

            转载请注明出处:http://blog.csdn.net/luotuo44/article/details/39670221 本文从简单到复杂.展示怎样使用libevent.网上的很多 ...

  2. Codeforces 432D Prefixes and Suffixes(KMP+dp)

    题目连接:Codeforces 432D Prefixes and Suffixes 题目大意:给出一个字符串,求全部既是前缀串又是后缀串的字符串出现了几次. 解题思路:依据性质能够依据KMP算法求出 ...

  3. Application to find the maximum temperature in the weather dataset

    import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop. ...

  4. Hlg 1832 【线段树 && RMQ】.cpp

    题意: 在给出的区间内求出最大买进卖出的差价. 思路: 对于弱数据:维护一个从左到右的最大差价和最小值.即当发现当前值比最小值小的时候更新最小值,否则看一下当前值与之前最小值的差价是否比最大差价大,是 ...

  5. Android的内存优化

    腾讯公司在五月三十一日开展[腾讯Bugly移动开发人员沙龙]大会.大会上面叶方正老师解说了 关于Android的内存优化的问题,只是我感觉叶老师许多其它的站在了測试的角度上去解释了这一方面,叶老师给我 ...

  6. (转)在 Visual Studio 2010 中创建 ASP.Net Web Service

    很多人在论坛里说,在Visual Studio 2010中不能创建“ASP.Net Web Service”这种project了,下面跟帖者云云,有的说这是因为微软已经将Web Service整合进W ...

  7. ios UITableView 相关

    1.tableView 实现的方法 无分组的cell #pragma mark - Table view data source - (NSInteger)tableView:(UITableView ...

  8. 字符串匹配的KMP算法(转)

    字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...

  9. u-boot 的bootcmd 和bootargs详解,烧写分析

    下面链接这篇文章也非常重要,介绍DM3X的一系列烧写步骤和设置方法 http://www.61ic.com/Article/DaVinci/TMS320DM3x/201204/41827.html U ...

  10. HUNNU11352:Digit Solitaire

    Problem description Despite the glorious fall colors in the midwest, there is a great deal of time t ...