unity3d FPS 枪的后座力
实现枪开枪后, 向上偏移一段距离,再缓慢下移复位(模仿cs)
调小后座力
using UnityEngine;
using System.Collections;public class Camera2Follower : MonoBehaviour {// 枪cd计时器float timer;// 后座力 之前枪摄像头的角度Vector3 s_pre_euler;public float gun_end_force = 0.53f; // 枪后座力大小 (可以先调大些方便调试)void Update (){....timer += Time.deltaTime;if (Input.GetButton("Fire1") && timer >= 0.15){// 计时器清零timer = 0f;s_pre_euler = transform.eulerAngles;// 后座力rotationY += Input.GetAxis("Mouse Y") * sensitivityY + gun_end_force;Quaternion yQuaternion2 = Quaternion.AngleAxis(rotationY, Vector3.left);transform.localRotation = originalRotation * yQuaternion2;}// 检测鼠标有没有移动if (Input.GetAxis("Mouse Y") != 0){//Debug.Log("X: " + transform.eulerAngles);s_pre_euler = transform.eulerAngles;rotationY += Input.GetAxis("Mouse Y") * sensitivityY;rotationY = ClampAngle(rotationY, minimumY, maximumY);Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, Vector3.left);transform.localRotation = originalRotation * yQuaternion;}else{recoverGun();}}// 恢复后座力以前的位置void recoverGun() {s_pre_euler.y = transform.eulerAngles.y;Quaternion current_cam = Quaternion.Euler(transform.eulerAngles);Quaternion target_cam = Quaternion.Euler(s_pre_euler);transform.eulerAngles = Quaternion.Slerp(current_cam, target_cam, 5 * Time.deltaTime).eulerAngles;}void Start (){s_pre_euler = transform.eulerAngles;}// 限制角度public static float ClampAngle (float angle, float min, float max){if (angle < -360F)angle += 360F;if (angle > 360F)angle -= 360F;return Mathf.Clamp (angle, min, max);}
}
看了一下cs的枪后座力 发现还有左右抖动,于是又加了点代码
y_angle_mat = xxxxxxxx; // 上下方向
....
// 在枪开火的方法区加
float xAngle = Random.Range(0.0f,1.0f);
Quaternion x_angle_mat = Quaternion.AngleAxis(xAngle, Vector3.up);
transform.localRotation = originalRotation * y_angle_mat * x_angle_mat; // 相当于乘以一个矩阵
unity3d FPS 枪的后座力相关推荐
- FPS游戏:实现人物高跳无后座力
实现FPS游戏内,人物三倍高跳,高空直走,以及枪械无后座力等常用功能. 三倍高跳/高空直走: 一般情况下,我们会通过自己Z坐标的基地址,来浏览内存,内存中有我们人物跳跃时的属性变化,找到变化范围在-2 ...
- android和平灵敏度,和平精英灵敏度怎么设置好 和平精英无后座力灵敏度设置攻略...
和平精英灵敏度怎么设置好?和平精英与刺激战场一样,游戏中也有灵敏度的设置,各位玩家玩游戏是最后选择一个适合自己的灵敏度玩,不然游戏中的操作会有点差别,下面小编为大家推荐了一个无后座力灵敏度设置,一起来 ...
- Unity3D FPS Game:第一人称射击游戏(一)
耗时一周制作的第一人称射击游戏,希望能帮助到大家! 由于代码较多,分为三篇展示,感兴趣的朋友们可以点击查看! Unity3D FPS Game:第一人称射击游戏(一) Unity3D FPS Game ...
- Unity3D FPS Game:第一人称射击游戏(二)
耗时一周制作的第一人称射击游戏,希望能帮助到大家! 由于代码较多,分为三篇展示,感兴趣的朋友们可以点击查看! Unity3D FPS Game:第一人称射击游戏(一) Unity3D FPS Game ...
- Unity3D FPS Game:第一人称射击游戏(三)
耗时一周制作的第一人称射击游戏,希望能帮助到大家! 由于代码较多,分为三篇展示,感兴趣的朋友们可以点击查看! Unity3D FPS Game:第一人称射击游戏(一) Unity3D FPS Game ...
- Unity3D FPS帧数修改
1.在Quality(质量)设置里把帧数设定关闭之后才能在代码中修改游戏运行的帧数 2.在Unity中新建脚本UpdateFrame.cs ,编写如下代码 targetFrameRate = Appl ...
- Unity3D FPS帧数修改实现详解
http://www.yxkfw.com/?p=11620 1.在Quality(质量)设置里把帧数设定关闭之后才能在代码中修改游戏运行的帧数 2.在Unity中新建脚本UpdateFrame.cs ...
- Unity3D FPS射击游戏
FPS射击游戏 前言 一.TapTap链接 二.游戏运行截图 总结 前言 抗日期间,一名士兵无意间得到了一张藏宝图,打开地图的一瞬间被传送到了外星球,心生贪念的士兵开启了寻宝之旅,士兵需要闯过重重关卡 ...
- Unity3D | FPS游戏_人物相关
这次报名参加了训练营,初次尝试Unity3D的游戏开发,很庆幸的是有老师很详细的指导,拖了一些时间,也总算完成了.依照惯例,继续来写总结,同时这次几乎上学到的都是新知识,在不熟悉的前提下,还比较复杂散 ...
最新文章
- python注释#、Ctrl+/
- 【错误归纳】E: Sub-process /usr/bin/dpkg returned an error code (1)子进程 已安装 post-installation 脚本 返回了错误号 1
- gis根据行政区计算栅格数据计算_Java中根据半径计算圆的周长和面积
- 20155220吴思其 实验2 Windows口令破解
- Android Service 的一些笔记
- java script 技巧_java script 技巧
- Reset Password 重置密码 (CentOS 5,6,7 ; Juniper Networks: SRX100 )
- 孕期服务器声音影响,噪音多少分贝影响胎儿听力
- Switch case 超经典练习题
- 【Golang】如何不反序列化为前提的情况下,修改ProtoBuffer某个Tag的值
- laravel使用artisan报错SQLSTATE[42S02]: Base table or view not found: 1146
- java 打印制表符_开发简单的Java应用
- 安卓输入法 车机版_搜狗输入法车机下载安装-搜狗输入法车载版下载v10.10.1 安卓版-单机手游网...
- 影视后期制作(Pr)
- 「开发者说」钉钉连接平台实现OA审批与企业内部系统数据互通
- Codeforces Round #736 (Div. 2)
- ROS——基于python3实现opencv图像处理任务
- 【Python习题】计算弓形的面积(保姆级图文+实现代码)
- 多任务让你走得更慢(很好,转自infoq)
- PythonOpenCV基础篇2线段