snakes_mp/Assets/Scripts/SnakePiece.cs
2025-04-14 11:36:17 +05:30

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;
}
}
}
}
}