87 lines
2.4 KiB
C#
87 lines
2.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Mirror;
|
|
using UnityEngine;
|
|
|
|
public class SnakePiece : NetworkBehaviour
|
|
{
|
|
public SnakeSkinScriptable skin;
|
|
[SyncVar]
|
|
public Vector2 direction = Vector2.right;
|
|
|
|
[SyncVar]
|
|
public string userId;
|
|
bool isLocal => userId == GameData.user_id;
|
|
public SpriteRenderer spriteRenderer;
|
|
public Color myColor, enemyColor = Color.green;
|
|
public Color myBodyColor, enemyBodyColor = Color.green;
|
|
|
|
Vector3 defaultSize;
|
|
|
|
void Awake(){
|
|
defaultSize = transform.localScale;
|
|
}
|
|
|
|
void OnValidate() {
|
|
if(spriteRenderer == null){
|
|
spriteRenderer = GetComponentInChildren<SpriteRenderer>();
|
|
}
|
|
}
|
|
|
|
[SyncVar]
|
|
public bool isHead = false;
|
|
// public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
|
|
// {
|
|
// if(stream.IsWriting){
|
|
// stream.SendNext(direction);
|
|
// stream.SendNext(isHead);
|
|
// }else{
|
|
// direction = (Vector2)stream.ReceiveNext();
|
|
// isHead = (bool)stream.ReceiveNext();
|
|
// }
|
|
// }
|
|
|
|
void Start(){
|
|
|
|
}
|
|
|
|
void Update(){
|
|
spriteRenderer.transform.localScale =Vector3.one * (isHead ? skin.headScaleMultiplier : 1);
|
|
if(isHead){
|
|
foreach(SkinData skinData in skin.head){
|
|
if(skinData.direction == direction){
|
|
spriteRenderer.sprite = skinData.sprite;
|
|
break;
|
|
}
|
|
}
|
|
if(isLocal){
|
|
spriteRenderer.color = myColor;
|
|
}else{
|
|
spriteRenderer.color = enemyColor;
|
|
}
|
|
}else{
|
|
Sprite defaultSprite = null;
|
|
bool found = false;
|
|
foreach(SkinData skinData in skin.body){
|
|
if(defaultSprite == null){
|
|
defaultSprite = skinData.sprite;
|
|
}
|
|
if(skinData.direction == direction){
|
|
spriteRenderer.sprite = skinData.sprite;
|
|
|
|
found = true;
|
|
break;
|
|
}
|
|
}
|
|
if(isLocal){
|
|
spriteRenderer.color = myBodyColor;
|
|
}else{
|
|
spriteRenderer.color = enemyBodyColor;
|
|
}
|
|
if(!found){
|
|
spriteRenderer.sprite = defaultSprite;
|
|
}
|
|
}
|
|
}
|
|
}
|