wei44317851 2024-04-26 18:46 采纳率: 100%
浏览 33
已结题

如何用蓝图获取其中任意几个角色的数量或者位置

img

提问,如何用蓝图获取其中任意几个角色的数量或者位置。用碰撞盒子还是什么节点可以实现?谢谢!

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-26 18:46
    关注

    引自免费微信小程序:皆我百晓生

    在虚幻引擎(Unreal Engine)中,你可以通过蓝图系统来获取场景中的角色数量和位置。下面是一个详细的步骤说明:

    首先,你需要一个游戏模式 blueprint(GameModeBP),它负责管理游戏规则。如果没有创建,可以在Content Browser中右键 -> Blueprint Classes -> Game Mode -> 创建一个新的GameModeBP。

    步骤1:添加事件监听

    在GameModeBP中,我们需要添加一个事件监听器来实时获取所有角色的位置。为此,找到并打开BeginPlay函数,然后拖拽一个Event Tick节点到空白区域。双击Event Tick,并在里面添加一个新的事件处理子例程,例如命名为UpdatePlayerCountAndPositions

    步骤2:获取所有演员列表

    UpdatePlayerCountAndPositions函数内,添加一个Get All Actors of Class节点,从Actor数组中获取所有的Actor实例。将Actor Class设置为你的玩家角色类,比如PlayerCharacter。连接这个节点的结果到一个变量,例如ActorsArray

    步骤3:计算角色数量

    UpdatePlayerCountAndPositions函数内,添加一个Count Array Elements节点,连接ActorsArray到其输入,这会计算出当前场景中角色的数量。将结果存储在一个整数变量中,例如PlayerCount

    步骤4:记录角色位置

    接着,在UpdatePlayerCountAndPositions函数内,添加一个For Each循环,遍历ActorsArray。在循环内部,添加一个Get Actor Location节点,连接对应的Actor实例作为输入,然后将得到的位置信息存储在一个结构体数组中,例如PlayerLocations。每个元素包含一个角色的位置。

    这样,每次游戏循环(Tick)时,都会更新角色数量和位置。你可以通过调用相应的getter方法,从GameMode对象中获取这些信息。

    以下是蓝图连线的简要描述,由于无法在这里绘制蓝图图片,你可以根据文字描述在虚幻编辑器中操作:

    1. 在GameModeBP的BeginPlay中,拖拽Event Tick
    2. 双击Event Tick,添加新的子例程UpdatePlayerCountAndPositions
    3. UpdatePlayerCountAndPositions里,添加Get All Actors of Class,设置Actor Class为 PlayerCharacter。
    4. 连接Get All Actors of Class的结果到Count Array Elements,输出PlayerCount
    5. 添加For Each循环,遍历ActorsArray
    6. 在循环内部,添加Get Actor Location,连接对应Actor实例,将结果存入PlayerLocations数组。

    如果你想要在其他蓝图中访问这些数据,可以通过继承GameMode,并在需要的地方调用GameMode的方法来获取角色数量和位置。例如,你可以创建一个PlayerController蓝图,然后在其中重写一些必要的方法来获取这些信息。在C++代码中,你也可以直接从GameMode派生的类中访问这些数据。

    注意:蓝图中没有直接的方法获取特定数量的角色,但你可以通过计数和筛选来实现。例如,如果你想获取前三个角色的位置,只需要限制For Each循环内的索引范围即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 5月5日
  • 已采纳回答 4月27日
  • 创建了问题 4月26日