| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class ArrowSync : MonoBehaviour
- {
- void Awake()
- {
- this.transform.Find("Head/_hunse_jian").gameObject.layer = 0;
- }
- void Update()
- {
- transform.position = Vector3.Lerp(transform.position, position, Time.deltaTime * 15);
- Head().position = transform.position;
- transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * 15);
- }
- public Transform Head() {
- return transform.Find("Head");
- }
- Quaternion rotation;
- Vector3 position;
- [System.NonSerialized] public bool isHit;
- [System.NonSerialized] public bool canUseSideCamera;
- [System.NonSerialized] public bool hasSetSyncData = false; //外部运算用的
- public void SetSyncData(SyncData syncData, bool apply = false) {
- rotation.x = syncData.rx;
- rotation.y = syncData.ry;
- rotation.z = syncData.rz;
- rotation.w = syncData.rw;
- position.x = syncData.px;
- position.y = syncData.py;
- position.z = syncData.pz;
- canUseSideCamera = syncData.cs;
- isHit = syncData.ih;
- if (apply) {
- transform.position = position;
- transform.rotation = rotation;
- //激活镜头
- Transform cameraTF = this.transform.Find("Camera");
- cameraTF.gameObject.SetActive(true);
- ArrowCamera arrowCameraComp = cameraTF.gameObject.AddComponent<ArrowCamera>();
- arrowCameraComp.SetArrowSync(this);
- //射出的声音
- AudioMgr.ins.PlayShoot(AudioMgr.GetAudioSource(this.gameObject));
- }
- }
- public class SyncData {
- [System.NonSerialized] public bool inited;
- static int autoID;
- public int id;
- public float rx;
- public float ry;
- public float rz;
- public float rw;
- public float px;
- public float py;
- public float pz;
- public bool cs;
- public bool ih;
- public void SetData(Arrow arrow) {
- Quaternion r = arrow.transform.rotation;
- Vector3 p = arrow.Head().transform.position;
- rx = r.x;
- ry = r.y;
- rz = r.z;
- rw = r.w;
- px = p.x;
- py = p.y;
- pz = p.z;
- cs = arrow.canUseSideCamera;
- ih = arrow.isHit;
- if (!inited) {
- id = autoID++;
- if (autoID > 1000) autoID = 0;
- }
- inited = true;
- }
- }
- }
|