123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- using System.Collections;
- using System.Collections.Generic;
- using Mirror;
- using UnityEngine;
- public class NetPlayer : NetworkBehaviour
- {
- public Behaviour[] LocalComponents;
- public SpriteRenderer characterSprite;
- [SyncVar]
- public bool insideDoor;
- public LayerMask friendLayer;
- void Start()
- {
- DontDestroyOnLoad(gameObject);
- if(!isLocalPlayer){
- gameObject.layer = LayerMask.NameToLayer("Friend");
- //GetComponent<BoxCollider2D>().size = new Vector2(GetComponent<BoxCollider2D>().size.x/2f,GetComponent<BoxCollider2D>().size.y);
- foreach(Behaviour localComponent in LocalComponents){
- localComponent.enabled=false;
- }
- }
- if(isLocalPlayer){
- SceneData.localPlayer = gameObject;
- if(SceneData.netSceneData==null){Debug.Log("Scene Data is not init yet");}else{
- transform.position = SceneData.netSceneData.spawnPoint.position;
- }
- }
- }
- public void ReturnToSpawn(){
- if(isLocalPlayer){
- StartCoroutine(returnToSpawn());
- }
- }
- IEnumerator returnToSpawn(){
- while(SceneData.netSceneData==null){
- yield return new WaitForSeconds(0.1f);
- }
- while(SceneData.netSceneData.spawnPoint==null){
- yield return new WaitForSeconds(0.1f);
- }
- transform.position = SceneData.netSceneData.spawnPoint.position;
-
- }
- public Transform frndTrans;
- bool oldFlipVal = false;
- Transform oldFriendVal;
- float oldFriendX;
- void Update()
- {
- if(!isLocalPlayer){return;}
- frndTrans = getOnFriend();
- // if(oldFriendVal!=frndTrans){//got on someones head, or got off
- // if(oldFriendVal==null && frndTrans!=null){//got on
- // oldFriendX = frndTrans.position.x;
- // oldFriendVal = frndTrans;
- // }else{//got off
- // oldFriendX = 0;
- // oldFriendVal = null;
- // }
- // }
- // if(oldFriendVal!=null){
- // transform.Translate(new Vector2(frndTrans.position.x - oldFriendX,0));
- // }
- if(oldFlipVal != characterSprite.flipX){
- if(isServer){
- RpcFlipX(characterSprite.flipX);
- }else{
- CmdFlipX(characterSprite.flipX);
- }
- oldFlipVal=characterSprite.flipX;
- }
- if(!isServer){return;}
- }
- [Command]
- void CmdFlipX(bool value){
- FlipX(value);
- RpcFlipX(value);
- }
- [ClientRpc]
- void RpcFlipX(bool value){
- if(!isLocalPlayer)FlipX(value);
- }
- void FlipX(bool value){
- characterSprite.flipX = value;
- }
- public void CallChangeInsideDoor(bool value){
- if(isServer){
- insideDoor=value;
- }else{
- CmdChangeInsideDoor(value);
- }
- }
- [Command]
- void CmdChangeInsideDoor(bool value){
- insideDoor=value;
- }
- public Transform getOnFriend()
- {
- Transform friend =null;
- //return (Physics2D.Linecast(transform.position, groundChecker.position, groundLayerMask));
- Collider2D col = GetComponentInChildren<Collider2D>();
- RaycastHit2D hit = Physics2D.BoxCast(col.bounds.center, new Vector2(col.bounds.size.x - (col.bounds.size.x / 5f), col.bounds.size.y), 0, Vector2.down, 0.1f, friendLayer);
- friend = (hit) ? hit.collider.transform : null;
- return friend;
- }
- }
|