Понедельник, 12 Апреля 2021, 01:01

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Не правильно отображается надпись
Не правильно отображается надпись
serezhaДата: Четверг, 04 Марта 2021, 21:54 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет! В сетевой игре у меня образовалась проблема:

Надпись "кто в кого попал", которую видят все клиенты-игроки, отображается не у всех одинаково.
Дело в том, что у того клиента-игрока который стреляет у него надпись показывает что "враг сам убил себя", а у остальных клиентов-игроков все нормально.
Нужно чтобы эта надпись была у всех одинаковая. :)

Скрипт "Client" висит на персонаже:

using UnityEngine;
using System.Collections;
public class Client: MonoBehaviour {
public float HP = 10;
public GameObject GunPointE;
public NetworkViewID pID;
public NetworkViewID pIDE;
public int windSpeed;
public bool YM;
public bool GUIYM;
public bool CTFF;
public string Nick = "exa";
public string Nickee = "ece";

void Awake () {
Application.runInBackground = true;
Nick = "exa";
Nickee = "ece";
pID = GetComponent<NetworkView> ().viewID;
Debug.Log (Nick + pID);
cam = transform.GetComponentInChildren<Camera>().GetComponent<Camera>();
YM = false;
GUIYM = false;
CTFF = false;
}

[RPC]
public void RpcYmer () {
NetworkViewID pID = GetComponent<NetworkView> ().viewID;
GUIYM = true;
}

void Update () {
if (HP <= 0 && YM == false && GetComponent<NetworkView>().isMine == true) {
GetComponent<NetworkView> ().RPC ("RpcYmer", RPCMode.All);
YM = true;
} else if (HP > 0) {
YM = false;
}
if(GetComponent<NetworkView>().isMine == true) {
if (Input.GetMouseButton (0)) {
CTFF = true;
} else {
CTFF = false;
}
}
}

public void AddDamage(float damage) {
if (HP != 0 || HP > 0) {
HP -= damage;
}
}

private void FixedUpdate() {
if (CTFF == true & CurAmmo > 0 & ReloadTimer <= 0 & ShootTimer <= 0) {
GameObject bulletInstance = (GameObject)Instantiate (Resources.Load ("BulletX444", typeof(GameObject)));
bulletInstance.transform.position = GunPointE.transform.position;
bulletInstance.GetComponent<Rigidbody> ().AddForce (cam.transform.forward * bulletSpeed);
}

public void OnGUI() {
if (GUIYM == true) {
GUI.Label (new Rect ((Screen.width - 100) / 2, Screen.height / 2 - 60, 500, 20), Nickee + pIDE + " -----> " + Nick + pID);
GUI.skin.label.normal.textColor = Color.red;
Debug.Log (Nickee + pIDE + " -----> " + Nick + pID);
}
}
}

Скрипт "BulletMove" висит на пуле:

using UnityEngine;
using System.Collections;
public class BulletMove : MonoBehaviour {
public Rigidbody bullet;
public float TimeToDestruct = 1.5f;
public bool RandomDamage = false;
public float Damage = 1;
public float minRandLimit = 0;
public float maxRandLimit = 0;
public bool DamageReduction = false;
public float StartPoinOfDamageReduction = 0;
public float FinalDamageInPercent = 0;
public AnimationCurve DamageReductionGraph;
public int StartSpeed = 100;
Vector3 PreviousStep;
float StartTime;
float CurrentDamage;
public string Nicke = "ece";
public NetworkViewID pIDT;

void Awake() {
Nicke = GameObject.FindObjectOfType<Client> ().Nick;
pIDT = GameObject.FindObjectOfType<Client> ().pID;
Invoke ("DestroyNow", TimeToDestruct);
PreviousStep = gameObject.transform.position;
StartTime = Time.time;
}

void FixedUpdate() {
Quaternion CurrentStep = gameObject.transform.rotation;
transform.LookAt (PreviousStep, transform.up);
RaycastHit hit = new RaycastHit ();
float Distance = Vector3.Distance (PreviousStep, transform.position);
if (Distance == 0.0f)
Distance = 09999 - 05f;
if (Physics.Raycast (PreviousStep, transform.TransformDirection (Vector3.back), out hit, Distance * 0.9999f) && (hit.transform.gameObject != gameObject))
{
if (hit.collider.tag == "Player") {//cle.GetComponent<NetworkView>().isMine == false
hit.transform.GetComponent<Client>().AddDamage(Damage);
hit.transform.GetComponent<Client> ().Nickee = Nicke;
hit.transform.GetComponent<Client> ().pIDE = pIDT;
Destroy(gameObject);
}
}
gameObject.transform.rotation = CurrentStep;
PreviousStep = gameObject.transform.position;
}
}

void DestroyNow()
{
DestroyObject (gameObject);
}

float GetDamageCoefficient()
{
float Value = 1.0f;
float CurrentTime = Time.time - StartTime;
Value = DamageReductionGraph.Evaluate (CurrentTime / TimeToDestruct);
return Value;
}
}
drcrackДата: Пятница, 05 Марта 2021, 01:35 | Сообщение # 2
старожил
Сейчас нет на сайте
Шанс что кто-то захочет в этой каше разбираться крайне мал
Оформи нормально в теге code с форматированием
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Не правильно отображается надпись
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2021 Рейтинг