unity脚本练习

Wesley13
• 阅读 470

1,unity自身带有鼠标动画,但是效果有限,进过改进,可以实现右键点击旋转,且有一定弹性限制

2,这个脚本很实用

3,unity中劲量不要实用中文注释

using UnityEngine;

public class MouseFollowRotation : MonoBehaviour {

    public Transform target;            
    public float xSpeed=200, ySpeed=200, mSpeed=10;
    public float yMinLimit=-50, yMaxLimit=50;
    public float distance=2, minDistance=2, maxDistance=30;
    
    //bool needDamping = false;
    public bool needDamping =true; 
    float damping = 5.0f;
    
    public float x = 0.0f;
    public float y = 0.0f;
    
    
    public void SetTarget( GameObject go )
    
    
    {
        target = go.transform;
    }
    // Use this for initialization
    void Start () {
        Vector3 angles = transform.eulerAngles;
        x = angles.y;
        y = angles.x;
    }
    
    // Update is called once per frame
    void LateUpdate () 
    {
        
    
        if (target) 
        {
        //use the light button of mouse to rotate the camera
            if( Input.GetMouseButton(1) )
            {
                x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
                y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
                
                 y = ClampAngle(y, yMinLimit, yMaxLimit);
                 
                 //print(Input.GetAxis("Mouse X"));
                 //print( Input.GetAxis("Mouse Y"));
//                 print(x);
//                 print(y);
            } 

               distance -= Input.GetAxis("Mouse ScrollWheel")*mSpeed;
            distance = Mathf.Clamp(distance, minDistance, maxDistance);
                             
            Quaternion rotation = Quaternion.Euler(y, x, 0.0f);
            Vector3 disVector = new Vector3( 0.0f, 0.0f, -distance );
            Vector3 position = rotation * disVector + target.position;
            //adjust the camera
            if( needDamping )
             {
              transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime*damping);
                    transform.position = Vector3.Lerp(transform.position, position, Time.deltaTime*damping);
            }
            else
            {
                transform.rotation = rotation;
                transform.position = position;
            }
                         
        }
    }
    
    static float ClampAngle (float angle, float min, float max) 
    {
    if (angle < -360)
        angle += 360;
    if (angle > 360)
        angle -= 360;
    return Mathf.Clamp (angle, min, max);
    }
}
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
2年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
unity2d 物体指向鼠标方向绕某一点旋转
 在2D游戏中,类似泡泡龙炮台发射、敌人飞机永远指向PLAYER、愤怒小鸟弹弓发射等效果,都需要用到物体跟随鼠标绕一个点旋转的效果,在unity中实现代码很简单,但是在理解上有一定障碍,因为unity是3D界面,他的旋转并不是2D世界中那么简单。实现这种效果,可以使用两种方法,一种是采用角度计算,一种是采用向量运算;1,角度运算容易理解,但是代码较为
Wesley13 Wesley13
2年前
Unity横屏
Android下发现Unity里面的Player设置,并不能完全有效,比如打开了自动旋转,启动的时候还是会横屏,修改XML添加以下代码<applicationandroid:icon"@drawable/ic\_launcher"                    android:label"@string/app\_name"
Wesley13 Wesley13
2年前
Unity5.6.4f1 配置WebGL教程
Unity5.6.4f1发布WebGL的配置教程步骤一:先查看自带的Unity是否yi配置好WebGL的项,若无,则可遵循以下教程来设置!(https://oscimg.oschina.net/oscnet/54612ae3d9b094f1db96b00b1c81a5fe432.png)步骤二:下图是我已经设置好的,未设置
Wesley13 Wesley13
2年前
unity将 -u4E00 这种 编码 转汉字 方法
 unity中直接使用 JsonMapper.ToJson(对象),取到的字符串,里面汉字可能是\\u4E00类似这种其实也不用转,服务器会通过类似fastjson发序列化的方式,将json转对象,获取对象的值就是中文但是有时服务器要求将传参中字符串中类似\\u4E00这种转汉字,就需要下面 publ
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这