日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity3d FPS 枪的后座力

發布時間:2024/1/8 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 枪的后座力的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。