我正在使用光子创建多人游戏服务。 用户可以在此服务中使用 WASD 或操纵杆移动。 摇杆功能在我一个人的时候很好用,但是当有人进入时,每个人的摇杆功能就不起作用了。 我该如何解决这个问题?
这是选择角色的代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Photon.Pun;
public class SimpleLauncher : MonoBehaviourPunCallbacks
{
public PhotonView playerPrefab;
public InputField playerNickname;
public GameObject nicknameInput;
public string chooseAvatar = "User1";
public override void OnConnectedToMaster()
{
Debug.Log("Connected to Master");
PhotonNetwork.JoinRandomOrCreateRoom();
}
public override void OnJoinedRoom()
{
Debug.Log("Joined a room.");
PhotonNetwork.Instantiate(playerPrefab.name, Vector3.zero, Quaternion.identity);
}
public void StartTheGame()
{
PhotonNetwork.NickName = playerNickname.text + "-" + chooseAvatar;
PhotonNetwork.ConnectUsingSettings();
nicknameInput.SetActive(false);
}
public void SetAvater(string avatarName)
{
chooseAvatar = avatarName;
}
}
这是玩家脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Photon.Pun;
public class SimplePlayer : MonoBehaviourPunCallbacks
{
public float speed = 1f;
public float rspeed = 5f;
float currentVeclocity;
float currentSpeed;
float speedVelocity;
public float MoveSpeed = 1f;
public float smoothRotationTime = 0.25f;
public bool enableMobileInputs = false;
public FixedJoystick joystick;
void Start()
{
GameObject chooseAvatar = (GameObject)Instantiate(Resources.Load(photonView.Owner.NickName.Split('-')[1]));
chooseAvatar.transform.SetParent(transform);
}
void Update()
{
if (!photonView.IsMine)
{
return;
}
Vector3 input = Vector3.zero;
if (enableMobileInputs)
{
input = new Vector3(joystick.input.x, joystick.input.y);
}
else
{
input = new Vector3(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
}
Vector3 inputDir = input.normalized;
if (inputDir != Vector3.zero)
{
float rotation = Mathf.Atan2(inputDir.x, inputDir.y) * Mathf.Rad2Deg;
transform.eulerAngles = Vector3.up * Mathf.SmoothDampAngle(transform.eulerAngles.y, rotation, ref currentVeclocity, smoothRotationTime);
}
float tragetSpeed = MoveSpeed * inputDir.magnitude;
currentSpeed = Mathf.SmoothDamp(currentSpeed, tragetSpeed, ref speedVelocity, 0.1f);
transform.Translate(transform.forward * currentSpeed * Time.deltaTime, Space.World);
}
}
我急需帮助。 请帮助我。
一开始我以为可能是摇杆代码的问题,所以我试着写了一个不同的摇杆代码。 然后,我检查了其他人进入时 IsMine 状态是否为真,但这也不是问题所在。