unity3d实现一个放大缩小视角左右旋转视角的效果

using UnityEngine;
using System.Collections;

//摄像机跟随
public class FollowPlayer : MonoBehaviour {

private Transform player;//角色
    private  Vector3 offsetPosition;//位置便宜
    private bool isRotating=false;//是否有在滑动

public float distance;//向量长度
    public float scrollSpeed=3;//拉近拉远的速度
    public float rotareSpeed=2;//旋转的速度

void Start () 
    {
    player=GameObject.FindGameObjectWithTag(Tags.player).transform;
    transform.LookAt(player.position);
    offsetPosition=transform.position-player.position;//得到偏移量

}

void Update () 
    {
     transform.position=offsetPosition+player.position;
     RotateView();
     ScrollView();

}

//处理视野的拉近和拉远效果
    void ScrollView()
    {
    // print(Input.GetAxis("Mouse ScrollWheel"));//鼠标向后滑动返回负数(拉近视野),向前正数(拉远视野)
     distance = offsetPosition.magnitude;
     distance += Input.GetAxis("Mouse ScrollWheel")*scrollSpeed;
     distance=Mathf.Clamp(distance,2,18);
     offsetPosition=offsetPosition.normalized*distance;//改变位置便移
    }

//控制视野左右上下旋转

void RotateView()
    {
    //Input.GetAxis("Mouse X");//得到鼠标水平方向的滑动
    //Input.GetAxis("Mouse Y");//得到鼠标在垂直方向的滑动
    if(Input.GetMouseButtonDown(1))
    {
      isRotating=true;

}

if(Input.GetMouseButtonUp(1))
    {
      isRotating=false;

}

if(isRotating)
    {

transform.RotateAround(player.position,player.up, rotareSpeed*Input.GetAxis("Mouse X"));//围捞角色滑动 左右

Vector3 originalPos=transform.position;
     Quaternion originalRotation=transform.rotation;

transform.RotateAround(player.position,transform.right,-rotareSpeed*Input.GetAxis("Mouse Y"));//上下 (会影响到的属性一个是Position,一个是rotation)
     //限制上下滑动的度数大小
     float x=transform.eulerAngles.x;
     if(x<10||x>80)//当超出范围之后,我们将属性归位,让旋转无效
     {
      transform.position=originalPos;
      transform.rotation=originalRotation;
     
     }

}

offsetPosition=transform.position-player.position;

}

}

下面是我做的RPG游戏的关于这个功能的截图:

时间: 2024-10-13 03:09:41

unity3d实现一个放大缩小视角左右旋转视角的效果的相关文章

KISSY Slide 组件应用遇到的一个放大缩小问题

在webapp中, 页面上已添加<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 用了kissy的slide组件,在android一些版本中,还是会出现双击放大缩小的问题. 在base.js中,修改方法buildWrap 将div中的position:absolute去掉,即可. 多了一

CABasicAnimation的基本使用方法(移动&#183;旋转&#183;放大&#183;缩小)

最近iOS开发中用到CoreAnimation的framework来做动画效果,虽然以前也用过,但一直没有系统学习过,今天看到一篇非常详细的博文(虽然是日语,但真的写的很好),在此翻译出来供大家学习. CABasicAnimation类的使用方式就是基本的关键帧动画. 所谓关键帧动画,就是将Layer的属性作为KeyPath来注册,指定动画的起始帧和结束帧,然后自动计算和实现中间的过渡动画的一种动画方式. CABasicAnimation的基本使用顺序 1.引用QuartzCore.framew

猫猫学IOS(一)UI之按钮操作 点击变换 移动 放大缩小 旋转

不多说,先上图片看效果,猫猫分享,必须精品 这个小程序主要实现点击方向键可以让图标上下左右动还有放大缩小以及旋转的功能,点击图片会显示另一张图片. 点击变换 其实用到了按钮的两个状态,再State Config中的Default还有Highlighted的两个状态下background内容图片的设置 其实就是按钮的几个状态: Default:默认状态 Highlighted:被点击时候的高亮状态 Selected:被选中的时候的状态 Disabled:不能使用的时候的状态 移动 - (IBAct

Unity3d在手机里面实现用手势放大缩小镜头

刚进入一家公司,上了4天班了,终于发现自己是那么的菜,看了老大写的一些代码.没办法看下去了,简直太强了,在这几天上班里,因为是很大的公司,感觉自己压力很大很大啊.心里很压抑.因为自己很菜.好了,先不说这些了,加油吧.坚持努力学习.这几天里老大叫我实现在手机里面实现镜头的放大缩小和移动场景,有点像海岛奇兵那样的控制镜头那样的效果,在写这些代码中.遇到了很多很多的问题.因为紧张,也因为自己基础不行. 代码如下,需要把这个脚本绑定在摄像机上: using UnityEngine;using Syste

图标放大缩小移动,加标注点,并带点击效果的实现

第一:了解三个类 Canvas,在英语中,这个单词的意思是帆布.在Android中,则把Canvas当做画布,只要我们借助设置好的画笔(Paint类)就可以在画布上绘制我们想要的任何东西:另外它也是显示位图(Bitmap类)的核心类.随用户的喜好,Canvas还可设置一些关于画布的属性,比如,画布的颜色.尺寸等.Canvas提供了如下一些方法: 一种就是使用普通View的canvas画图,还有一种就是使用专门的SurfaceView的canvas来画图.两种的主要是区别就是可以在SurfaceV

QT5 OpenGL (六, 键盘事件, 开关灯,放大缩小综合运用)

概要 实例效果图 立体图放大图 立体图缩小图 不加矢量开灯图 不加矢量关灯图 加矢量关灯图1 加矢量关灯图2 部分代码展示 主要内容解析 QT键盘事件 立体图形的放大和缩小 上下左右键以及A键D争键控制x y z 轴旋转速度的快慢 开灯关灯以及矢量的实现原理 概要 多篇讲QT5 opengl的文章,从简单到复杂,几乎每篇都在原来的基友上有所增加新的内容, 感觉越到后面,越容易被opengl强大的功能所震撼, 而这篇文章主要是把前面所讲的一些内容进行综合, 然后再加入新的一些内容的运用. 首先,

touch 规定范围放大缩小

using UnityEngine;using System.Collections; public class TouchMoveTest : MonoBehaviour { private Touch oldTouch1; //上次触摸点1(手指1) private Touch oldTouch2; //上次触摸点2(手指2) private float offset; private float scaleFactor; private Vector3 localScale; privat

javascript仿新浪微博图片放大缩小及旋转效果

经常看到新浪微博里有图片放大缩小旋转效果,感觉效果还不错,所以就想试着做一个类似的demo出来,至于旋转对于IE可以用滤镜来解决,标准的浏览器可以用html5中的canvas画布来解决. 思路:1.点击小图后,小图隐藏掉,在小图父级元素后增加一张大图且显示出来. 2.点击往左转,往右转触发旋转方法. 3. 点击收起按钮,把1的步骤反过来 隐藏大图 显示小图. 4. 点击查看原图功能 目前没有做成js灯箱效果,直接打开一个新连接.但是如果想做成灯箱效果的话,可以看我这篇博客,灯箱效果演示 我们可以

【开源】专业K线绘制[K线主副图、趋势图、成交量、滚动、放大缩小、MACD、KDJ等)

这是最近一个iOS项目需要使用的K线的绘制,在网上大量查阅资料无果,只好自行绘制. 实时数据使用来源API: https://www.btc123.com/kline/klineapi 返回数据说明: 1.时间戳 2.开盘价 3.最高价 4.最低价 5.收盘价 6.成交量 实现功能包括K线主副图.趋势图.成交量.滚动.放大缩小.MACD.KDJ,长按显示辅助线等功能 预览图 最后的最后,这是项目的开源地址:https://github.com/yate1996/Y_KLine,如果帮到了你,麻烦