unity-unet-设置player的开始位置

  • 当客户端连接成功并验证通过时(你自己的验证逻辑,后面有这样的文章),会通知服务端spawn 一个该 player ,该 playertransform 可以自定义设置

使用

  1. 直接在 Scene 中丢几个空对象,挂上一个 Network Start Position 组件
    这里写图片描述

  2. 然后在 Network Manager 中设置随机方式,就可以随机这几个点 Spawn player 了
    这里写图片描述

    两种随机方式的解释,传送门:点我

    • Random : 在几个 startPosition 中随机选择
    • Round Robin:在几个 startPosition 中循环选择

源代码

  1. Network Start Position
    在代码里面是直接 在 Awake 时就往 Network Manager 中丢进去了 Transform

     public void Awake()
            {
                NetworkManager.RegisterStartPosition(transform);
            }
  2. Network Manager

            static public void RegisterStartPosition(Transform start)
            {
                if (LogFilter.logDebug) { Debug.Log("RegisterStartPosition:" + start); }
                s_StartPositions.Add(start);
            }

    两种选择方式的代码

            public Transform GetStartPosition()
            {
                // first remove any dead transforms
                if (s_StartPositions.Count > 0)
                {
                    for (int i = s_StartPositions.Count - 1; i >= 0; i--)
                    {
                        if (s_StartPositions[i] == null)
                            s_StartPositions.RemoveAt(i);
                    }
                }
    
                if (m_PlayerSpawnMethod == PlayerSpawnMethod.Random && s_StartPositions.Count > 0)
                {
                    // try to spawn at a random start location
                    int index = Random.Range(0, s_StartPositions.Count);
                    return s_StartPositions[index];
                }
                if (m_PlayerSpawnMethod == PlayerSpawnMethod.RoundRobin && s_StartPositions.Count > 0)
                {
                    if (s_StartPositionIndex >= s_StartPositions.Count)
                    {
                        s_StartPositionIndex = 0;
                    }
    
                    Transform startPos = s_StartPositions[s_StartPositionIndex];
                    s_StartPositionIndex += 1;
                    return startPos;
                }
                return null;
            }

    如果想自定义 start position 的话,可以继承并重写这几个方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝶泳奈何桥.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值