unity3d FPS 枪的后座力
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                unity3d FPS 枪的后座力
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                實(shí)現(xiàn)槍開槍后, 向上偏移一段距離,再緩慢下移復(fù)位(模仿cs)
調(diào)小后座力
using UnityEngine; using System.Collections;public class Camera2Follower : MonoBehaviour {// 槍cd計(jì)時(shí)器float timer;// 后座力 之前槍攝像頭的角度Vector3 s_pre_euler;public float gun_end_force = 0.53f; // 槍后座力大小 (可以先調(diào)大些方便調(diào)試)void Update (){....timer += Time.deltaTime;if (Input.GetButton("Fire1") && timer >= 0.15){// 計(jì)時(shí)器清零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;}// 檢測鼠標(biāo)有沒有移動(dòng)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();}}// 恢復(fù)后座力以前的位置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的槍后座力 發(fā)現(xiàn)還有左右抖動(dòng),于是又加了點(diǎn)代碼
y_angle_mat = xxxxxxxx; // 上下方向 .... // 在槍開火的方法區(qū)加 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; // 相當(dāng)于乘以一個(gè)矩陣總結(jié)
以上是生活随笔為你收集整理的unity3d FPS 枪的后座力的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: App开发者不再遵循苹果iOS设计惯例
- 下一篇: 艾永亮:苹果缺乏创新能力?打造超级产品是
