角色信息展示
展示角色使用Render Texture,这个Render Texture相机放在Main City Scene场景当中,每次进入主城场景时,先把这个摄像机关闭,
MainCitySys
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| private Transform charCamTrans;
public void EnterMainCity() { MapCfg mapData = resSvc.GetMapCfgData(Constants.MainCityMapID); resSvc.AsyncLoadScene(mapData.sceneName, () => { LoadPlayer(mapData); mainCityWnd.SetWndState(); audioSvc.PlayBGMusic(Constants.BGMainCity); if(charCamTrans != null) { charCamTrans.gameObject.SetActive(false); }
}); }
|
MainCitySys
还要提供打开关闭InfoWnd
的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public void OpenInfoWnd() { if(charCamTrans == null) { charCamTrans = GameObject.FindGameObjectWithTag("CharShowCam").transform; } charCamTrans.localPosition = playerController.transform.position + playerController.transform.forward * 3.8f + new Vector3(0, 1.2f, 0); charCamTrans.localEulerAngles = new Vector3(0, 180 + playerController.transform.localEulerAngles.y, 0); charCamTrans.localScale = Vector3.one; charCamTrans.gameObject.SetActive(true); infoWnd.SetWndState(); }
public void CloseInfoWnd() { if(charCamTrans != null) { charCamTrans.gameObject.SetActive(false); } }
|
角色触摸旋转
InfoWnd
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public RawImage charShow;
private void RegTouchEvts() { OnPointerDown(charShow.gameObject, (evt) => { startPos = evt.position; MainCitySys.Instance.SetStartRotate(); });
OnPointerDrag(charShow.gameObject, (evt) => { float rotate = -(evt.position.x - startPos.x)*0.4f; MainCitySys.Instance.SetPalyerRotate(rotate); }); }
|
MainCitySys
:
1 2 3 4 5 6 7 8 9
| private float startRotate = 0; public void SetStartRotate() { startRotate = playerController.transform.localEulerAngles.y; } public void SetPalyerRotate(float degrees) { playerController.transform.localEulerAngles = new Vector3(0,startRotate + degrees, 0); }
|