63 lines
1.7 KiB
C#
63 lines
1.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Photon.Pun;
|
|
using UnityEngine;
|
|
|
|
public class SnakePiece : MonoBehaviourPunCallbacks, IPunObservable
|
|
{
|
|
public SnakeSkinScriptable skin;
|
|
public Vector2 direction = Vector2.right;
|
|
public SpriteRenderer spriteRenderer;
|
|
public Color myColor, enemyColor = Color.green;
|
|
|
|
Vector3 defaultSize;
|
|
void Awake(){
|
|
defaultSize = transform.localScale;
|
|
}
|
|
|
|
void OnValidate() {
|
|
if(spriteRenderer == null){
|
|
spriteRenderer = GetComponentInChildren<SpriteRenderer>();
|
|
}
|
|
}
|
|
|
|
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(){
|
|
if(photonView.IsMine){
|
|
spriteRenderer.color = myColor;
|
|
}else{
|
|
spriteRenderer.color = enemyColor;
|
|
}
|
|
}
|
|
|
|
void Update(){
|
|
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;
|
|
}
|
|
}
|
|
}else{
|
|
foreach(SkinData skinData in skin.body){
|
|
if(skinData.direction == direction){
|
|
spriteRenderer.sprite = skinData.sprite;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|