Unity5人物跑动同步教程 VR资源

alayeshi 2017-11-29 18:04:27

案例目标:使用Network功能实现两个客户端中的两个人物在同一个场景走动可以互相看到。

步骤1:

新建一个场景,场景中包括相机(命名为KKCAM)、一个plane、3个cube(命名为enviorment)、一个空物体(命名为Network)、一个第一人称角色控制器(命名为PLAYER)。
如下图:
 


步骤2:

给PLAYER添加Network Identity组件和Network Transform组件。
Network Identity组件用来给该物体添加ID,Network Transform组件是为了我们人物的移动而添加的。所以在Transform SyncMode的选项下修改成“Sync Transform”。
如下图:
 



步骤3:

给Network上添加组件Network Manager和Network Manager HUD组件。

Network Manager负责管理Network的 通讯,Network Manager HUD组件用来显示运行时的关于Network的UI。
将PLAYER作出一个预制物体,然后放到Spawn info下的playerprefab内。如下图:

 


步骤4:

给PLAYER添加脚本playernetwork。
该脚本的作用就是客户端只可以控制自己客户端的角色。
注意:PLAYER上的CharacterController,FirstPersonController组件以及其子物体FirstPersonCharacter上的相机组件都是默认为关闭。
如图:


 

代码;

 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
 
 
public class playernetwork : NetworkBehaviour
{
 
    [SerializeField]
    Camera fpscamera;
    [SerializeField]
    AudioListener audioplayer;
 
    // Use this for initialization
    void Start()
    {
        if (isLocalPlayer)//只有本客户端的角色才会执行
 
        {
            GameObject.Find("KKCAM").SetActive(false);//关闭掉场景中的相机使用角色控制器中的自己带的相ua
            GetComponent<CharacterController>().enabled = true;
            GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().enabled = true;
 
            fpscamera.enabled = true;
            audioplayer.enabled = true;
 
        }
    }
 
    // Update is called once per frame
    void Update()
    {
 
    }
}

注意:PLAYER作为预制物体要点Apply


步骤5:然后打包运行,需要启动两个exe,第一个启动后选择LAN host选项做为服务器选项,第二个启动后点击LAN Client选项作为客户端。如下图:

 



运行效果:动态图
 
99VR视界二维码
热门推荐
Hot Recommended
在线客服