| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.EventSystems;
- public class BowCamera : MonoBehaviour
- {
- //触摸检测器
- JC.Unity.TouchChecker touchChecker = new JC.Unity.TouchChecker();
- //触摸模式开关
- private static bool _isTouchMode = true;
- public static bool isTouchMode
- {
- get
- {
- // if (CommonConfig.isReleaseVersion) return false;
- return _isTouchMode;
- }
- set
- {
- _isTouchMode = value;
- }
- }
- public GameObject GO;
- //左右转动范围限制
- float[] limitRangeRotateY = { -30, 30 };
- //上下转动范围限制
- float[] limitRangeRotateX = { -30, 30 };
- //本地欧拉角记录值
- Vector3 localEulerAngles;
- // Start is called before the first frame update
- void Start()
- {
- localEulerAngles = transform.localEulerAngles;
- touchChecker.onMoved += delegate (Touch t, bool isOnUI)
- {
- Debug.Log(isOnUI);
- // if (banLogic) return;
- if (isOnUI) return;
- //触摸控制镜头和拉弓射箭
- this.localEulerAngles.x = Mathf.Clamp(this.localEulerAngles.x - t.deltaPosition.y * Time.deltaTime * 5, limitRangeRotateX[0], limitRangeRotateX[1]);
- this.localEulerAngles.y = Mathf.Clamp(this.localEulerAngles.y + t.deltaPosition.x * Time.deltaTime * 5, limitRangeRotateY[0], limitRangeRotateY[1]);
- this.transform.localEulerAngles = this.localEulerAngles;
- };
- touchChecker.onEnded += delegate (Touch t, bool isOnUI)
- {
- // if (banLogic) return;
- if (!isOnUI) LauncherCtrl.instance.Shoot();// armBow.ADS_fire();
- };
- }
- private void Update()
- {
- // CameraAni();
- }
- public void CameraAni()
- {
- if (Application.platform == RuntimePlatform.WindowsEditor)
- {
- //touchChecker.Update();
- //鼠标控制镜头和拉弓射箭
- this.localEulerAngles.x = Mathf.Clamp(this.localEulerAngles.x - 2f * Input.GetAxis("Mouse Y"), limitRangeRotateX[0], limitRangeRotateX[1]);
- this.localEulerAngles.y = Mathf.Clamp(this.localEulerAngles.y + 2f * Input.GetAxis("Mouse X"), limitRangeRotateY[0], limitRangeRotateY[1]);
- this.transform.localEulerAngles = this.localEulerAngles;
- }
- else if (isTouchMode)
- {
- touchChecker.Update();
- }
- }
- private void OnDrawGizmos()
- {
- Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * 200, Color.green);//绘制射线
- Debug.DrawRay(GO.transform.position, transform.TransformDirection(Vector3.forward) * 200, Color.green);//绘制射线
- }
- public RaycastHit GetRaycastHit()
- {
- float maxDistance = 100;
- int layerMask = 1 << 8; //TargetLayerMask
- RaycastHit raycastHit;
- Ray ray = new Ray(transform.position, transform.forward); ;
- Physics.Raycast(ray.origin, ray.direction, out raycastHit, maxDistance, layerMask);
- return raycastHit;
- }
- }
|