【发布时间】:2018-04-10 08:05:24
【问题描述】:
我正在尝试使用 unity 5.6.4p2 和 c# 将单人游戏切换为多人游戏。
我有两个粒子系统:
- “enginePS”设置为唤醒时播放,出现在所有方面(客户端 + 服务器)。
- “engineSpeedPS”设置为在玩家前进时播放。
第二个粒子系统不会只对向前移动的本地玩家出现,所以其他人看不到粒子系统。
我是 UNet 的新手,非常感谢您的帮助。请检查下面的代码:
using UnityEngine;
using UnityEngine.Networking;
public class MP_PlayerController : NetworkBehaviour
{
public ParticleSystem enginePS1, enginePS2, engineSpeedPS1, engineSpeedPS2,
engineSpeedPS3;
private float verticalCurrentValue;
private float movingX, movingZ;
private bool zAxis;
public bool isMovingForward = false;
public bool isMovingBackward;
public float currentPossition;
public GameObject player;
void Start()
{
engineSpeedPS1.Stop();
engineSpeedPS2.Stop();
engineSpeedPS3.Stop();
verticalCurrentValue = movingZ;
currentPossition = transform.position.z;
}
void Update()
{
if (!isLocalPlayer)
{
return;
}
movingX = Input.GetAxis("Horizontal") * Time.deltaTime * 150.0f;
movingZ = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f;
transform.Rotate(0, movingX, 0);
transform.Translate(0, 0, movingZ);
ChangeEngineParticle();
}
void ChangeEngineParticle()
{
if(!isLocalPlayer)
{
return;
}
if (Input.GetKey("up"))
{
if (isMovingForward == false)
isMovingForward = true;
}
else
{
if (isMovingForward == true)
isMovingForward = false;
}
if (isMovingForward)
{
if (!engineSpeedPS1.isPlaying)
{
engineSpeedPS1.Play();
engineSpeedPS2.Play();
engineSpeedPS3.Play();
}
}
else if (isMovingForward == false)
{
if (engineSpeedPS1.isPlaying)
{
engineSpeedPS1.Stop();
engineSpeedPS2.Stop();
engineSpeedPS3.Stop();
}
}
}
我尝试在 CmdChangeEngineParticle() 之前使用 [Command] 属性,但这使得 engineSpeedPS 只能在服务器端工作,而不会在客户端被检测到。
有什么想法吗??
【问题讨论】: