• 注册
  • 玩家交流 玩家交流 关注:1943 内容:14246

    【Mod开发每日一课】第1期:通过坐标判断玩家是否在指定区域内

  • 查看作者
  • 打赏作者
  • 当前位置: 七日杀中文网 > 玩家交流 > 正文
  • 玩家交流
  • Lv.1
    VIP 1

    废话不多说,直接上代码哈 [s-45] 

    public static class WorldUtils {
        public static bool IsPlayerInArea(this World world, int id, Vector3 minBounds, Vector3 maxBounds) {
            if (world is null) {
                return false;
            }
            
            EntityPlayer player;
            if (!world.Players.dict.TryGetValue(id, out player)) {
                return false;
            }
            
            Vector3 playerPos = player.GetPosition();
            bool bInXRange = playerPos.x >= minBounds.x && playerPos.x <= maxBounds.x;
            bool bInZRange = playerPos.z >= minBounds.z && playerPos.z <= maxBounds.z;
            
            return bInXRange && bInZRange;
        }
    }
    1. 方法的签名与特性

    • 首先这是一个扩展方法(通过 this World world 实现),用于给 World 类增加自定义功能。

    • 方法名 IsPlayerInRange 表示 “判断玩家是否在范围内”。

    • 参数说明:

      • world:当前游戏世界的实例(扩展方法的目标对象)。

      • id:要检测的玩家实体 ID。

      • from:区域的起始坐标(Vector3 类型,包含 x、y、z 分量)。

      • to:区域的结束坐标(Vector3 类型,包含 x、y、z 分量)。

    • 返回值:bool 类型,true 表示玩家在区域内,false 表示不在。

    2. 空值校验

    • 第 1 步:检查 world 是否为 null(若游戏世界未加载,直接返回 false)。

    • 第 2 步:通过 world.Players.dict.TryGetValue(id, out player) 尝试根据 id 获取玩家实体 player。若找不到该 ID 对应的玩家,返回 false

    3. 区域范围判断逻辑

    • 第 1 步:通过 player.GetPosition() 获取玩家的当前坐标 playerPos

    • 第 2 步:定义两个布尔变量,分别判断玩家是否在X 轴范围Z 轴范围内:

      • bInXRange:玩家的 X 坐标是否在 from.x 到 to.x 之间。

      • bInZRange:玩家的 Z 坐标是否在 from.z 到 to.z 之间。

    • 第 3 步:返回最终结果(只有 X 和 Z 轴都在范围内时,才返回 true)。

    好啦,每日教程一分享到此结束……

    "点赞是美意,打赏是鼓励"

    Lv.5
    别扒拉我
    赠送了礼物[火箭]

    【MOD作者】反馈与交流请加Q群:941638333

    回复
    Lv.6
    VIP 2
    怦然心动
    赠送了礼物[火箭]

    反馈与交流请加Q群:941638333

    回复
    Lv.6
    赠送了礼物[天使棒]

    一个热爱七日杀生存模组开发和UI设计的mod制作爱好者

    回复
    创建和谐社区,请勿发表 不符合法律法规 的内容,社区不是大家 发泄个人情绪 的地方
    获取金币请查看 网页右侧悬浮栏领金币按钮 ,做 签到社区任务 获得金币!

    请登录之后再进行评论

    登录
    • 大版主
    • 小版主
  • 摸鱼摸鱼摸
    摸鱼摸鱼摸
    交流吹水群967780922
  • 柒月白风清
    柒月白风清
    一只小萌新,万年摸鱼党!已经脱坑了。。。
  • Cure_805
    Cure_805
    晚上在睡觉,白天在工作,不一定能及时回复,有事可以留言!
  • 至善丶丶
    至善丶丶
    群:1050040662 定制/开服/地图制作/价格公道
  • 银河
    银河
    CSOL大灾变欢迎你的到来。QQ群:967780922
  • 无名氏_217
  • 安安
    安安
    大背包、常显、叠加、除草树,唯一作者QQ383125283
  • happy!
    happy!
    住院中
  • 咖啡很苦
  • 妮可Neko
    妮可Neko
    无聊写些小玩意儿
  • 社会你小七
    社会你小七
    一个不会开发的开发者
  • 暂没有数据

    赞助广告位

  • 点击展示图片即可一键加入QQ群
    赞助广告:100R/月 目前空缺广告位:0

    分享网站

  • 繁体中文
  • 任务
  • 动态
  • 到底部
  • 帖子间隔 侧栏位置: