Unity Photon WASD 工作但虚拟操纵杆在另一个玩家加入网络后将无法工作。我该如何解决?

问题描述 投票:0回答:0

我正在使用光子创建多人游戏服务。 用户可以在此服务中使用 WASD 或操纵杆移动。 摇杆功能在我一个人的时候很好用,但是当有人进入时,每个人的摇杆功能就不起作用了。 我该如何解决这个问题?

This is the inspector setting for select a character.

这是选择角色的代码。

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

This is the inspector setting for Player

This is the inspector setting for Player

这是玩家脚本

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 状态是否为真,但这也不是问题所在。

unity3d photon joystick photon-pun
© www.soinside.com 2019 - 2024. All rights reserved.