facebook twitter hatena line email

「Unity/photon/pun2/位置同期」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(アバター風にしてみる)
行12: 行12:
 
*PhotonAvater.sc
 
*PhotonAvater.sc
 
<pre>
 
<pre>
using System.Collections;
 
using System.Collections.Generic;
 
 
using UnityEngine;
 
using UnityEngine;
using UnityEngine.UI;
+
using Photon.Pun;
using System;
+
 
public class PhotonAvater : MonoBehaviourPunCallbacks {
+
public class PhotonAvater : MonoBehaviourPunCallbacks, IPunInstantiateMagicCallback
 +
{
 
public string str = "guest1";
 
public string str = "guest1";
 
void Awake()
 
void Awake()
行25: 行24:
 
{
 
{
 
GetComponent<Renderer>().material.color = Color.red;
 
GetComponent<Renderer>().material.color = Color.red;
}
+
} else {
}
+
            // もし操作するクラスをaddしてた場合は、自分以外のときは無効とする
// 自分からの情報と他人からの情報(位置と回転)同期
+
            GetComponent<CharacterControl>().enabled = false;
void OnPhotonInstantiate(PhotonMessageInfo info)
+
        }
{
+
    }
info.Sender.TagObject = this.gameObject;
+
    void IPunInstantiateMagicCallback.OnPhotonInstantiate(PhotonMessageInfo info)
}
+
    {
 +
        if (info.Sender.IsLocal)
 +
        {
 +
            Debug.Log("自身が生成");
 +
        }
 +
        else
 +
        {
 +
            Debug.Log("他人が生成");
 +
        }
 +
        info.Sender.TagObject = this.gameObject;
 +
    }
 
}
 
}
 
</pre>
 
</pre>
  
 
公式:https://doc.photonengine.com/ja-jp/pun/v2/gameplay/instantiation
 
公式:https://doc.photonengine.com/ja-jp/pun/v2/gameplay/instantiation

2022年12月7日 (水) 20:06時点における版

アバター風にしてみる

  1. Cube作成。ここでは"Avatar"という名前に変更した。
  2. AvatarにBoxColliderが追加されていることを確認
  3. AvatarのAddComponentにPhotonAvaterとPhotonViewとPhotonTransformViewを追加
  4. PhotonTransformViewに、PositionとRotationが、追加されてることを確認。
  5. Assets下に、Resourcesディレクトリを追加して、AvatarをResourcesに追加
  6. 以下スクリプトでPrefabのAvaterをロードする。
  • PhotonManager.cs
GameObject avater = PhotonNetwork.Instantiate("Avatar",  Vector3.zero, Quaternion.Euler(Vector3.zero),0);
  • PhotonAvater.sc
using UnityEngine;
using Photon.Pun;

public class PhotonAvater : MonoBehaviourPunCallbacks, IPunInstantiateMagicCallback
{
	public string str = "guest1";
	void Awake()
	{
		this.name = "Avater" + GetComponent<PhotonView>().InstantiationId;
		if (GetComponent<PhotonView>().IsMine)
		{
			GetComponent<Renderer>().material.color = Color.red;
		} else {
            // もし操作するクラスをaddしてた場合は、自分以外のときは無効とする
            GetComponent<CharacterControl>().enabled = false;
        }
    }
    void IPunInstantiateMagicCallback.OnPhotonInstantiate(PhotonMessageInfo info)
    {
        if (info.Sender.IsLocal)
        {
            Debug.Log("自身が生成");
        }
        else
        {
            Debug.Log("他人が生成");
        }
        info.Sender.TagObject = this.gameObject;
    }
}

公式:https://doc.photonengine.com/ja-jp/pun/v2/gameplay/instantiation