gpt4 book ai didi

c# - 需要澄清此 AR 多人游戏教程中的一件事

转载 作者:太空狗 更新时间:2023-10-29 23:28:31 24 4
gpt4 key购买 nike

我正在试验使用本教程制作的简单 AR 多人游戏应用:

https://www.youtube.com/watch?v=n3a-aaSYR8s

SourceCode

有效!但我不确定,为什么两个以相同方式实例化的对象位置不同:月亮和玩家。

为什么“Player”游戏对象仍然附着在用户的手机上,而“Moon”仍然附着在房间的某个位置?还有为什么实例化后月亮的位置和Player不一样?

它们都是用相同的命令实例化的:

PhotonNetwork.Instantiate ("SampleMoon", Vector3.zero, Quaternion.identity, 0);

如果两者的实例化代码相同,定位的差异是否与这些预制件本身有关?究竟是什么原因造成的?

最佳答案

再次查看来自17:16 的视频!

区别不在于实例化,而在于实例化对象(预制件)所附加的组件:

MoonController (由月球使用)与 PlayerController (由玩家使用)


虽然 MoonController 基本上除了登记月亮什么都不做:

void Start () 
{
// Register this object to the current game controller.
// This is important so that all clients have a reference to this object.
GameController.Instance.RegisterMoon (this);
}

PlayerController 总是设置为 positionrotation Update 中的相机方法(在此应用程序中“Camera = Players Smartphone”)。我将重要的行标记为粗体:

public Transform CameraTransform;

private void Start ()
{
CameraTransform = FindObjectOfType ().transform;
// Register this player to the GameController.
// Important: all clients must have a reference to this player.
GameController.Instance.RegisterPlayer (this);

// Hide your own model if you are the local client.
if (photonView.isMine)
gameObject.transform.GetChild (0).gameObject.SetActive (false);
}

void Update ()
{
// If this player is not being controlled by the local client
// then do not update its position. Each client is responsible to update
// its own player.
if (!photonView.isMine && PhotonNetwork.connected)
return;

<b>// The player should have the same transform as the camera
gameObject.transform.position = CameraTransform.position;
gameObject.transform.rotation = CameraTransform.rotation;</b>
}
}

所以在实例化两个对象后的第一帧中,Player 对象已经在 Camera 的位置和旋转上,而 Moon 仍然在它的实例化点上 0,0,0 .

关于c# - 需要澄清此 AR 多人游戏教程中的一件事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52358981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com