前置需求

    创建一个动画混合空间,水平坐标为value区间为-1到1(宠物朝向),垂直坐标为speed区间为0到2(宠物速度),放入动画蓝图。

    

虚拟宠物猫Python程序 虚拟宠物4_碰撞检测

一,定点移动

首先,实现宠物移动需要设置速度,朝向,目的地三个变量。在宠物类中定义变量。

    

虚拟宠物猫Python程序 虚拟宠物4_虚拟宠物猫Python程序_02

   在玩家操控角色类中通过线条碰撞检测,来获取碰撞地点为要前往的目的地。将“由通道检测线条”绑定到R键。

    

虚拟宠物猫Python程序 虚拟宠物4_碰撞检测_03

   将hit击中的地点赋给location变量。

    

虚拟宠物猫Python程序 虚拟宠物4_碰撞检测_04

  在确定了宠物要去的目的地后,创建get value函数获取宠物朝向。

  在函数中通过宠物位置与location变量获取旋转来获得宠物到达目的地应该的朝向角度,再通过宠物当前角度获取差量,将差量限制再-1到1之间。

    

虚拟宠物猫Python程序 虚拟宠物4_碰撞检测_05

  将限制了角度的差量赋予value变量,我们就获得了宠物需要的朝向。

  我们可以通过目的地与宠物的距离来设定宠物的速度。创建set speed函数,通过compare float来分别获取不同距离下需要的速度。(上图的compare float与下图的compare float是同一个)

    

虚拟宠物猫Python程序 虚拟宠物4_虚拟宠物猫Python程序_06

        

虚拟宠物猫Python程序 虚拟宠物4_虚拟宠物猫Python程序_07

  我们设定如果距离大于500将速度设为2,小于500大于200将速度设为1,若距离小于200我们视为宠物到达目的地,将value和speed设为0。

  有了speed和value我们只需要将两个变量的值导入动画混合空间就可以实现宠物的移动。(上图为从动画蓝图中获取宠物类中的speed和value,下图将两个变量导入混合空间)

    

虚拟宠物猫Python程序 虚拟宠物4_碰撞检测_08

     

虚拟宠物猫Python程序 虚拟宠物4_虚拟宠物猫Python程序_09

  通过帧事件执行两个函数,定点移动功能完成。

二,跟随玩家

在玩家操控角色类中我们绑定T键来切换到跟随状态。给宠物类添加following布尔值变量来判断是否为跟随状态。绑定Y键为取消跟随状态。(rest忽略)

    

虚拟宠物猫Python程序 虚拟宠物4_虚拟宠物猫Python程序_10

  在宠物类中添加分支,判断条件为following变量。

  创建get location函数,获取角色位置。

    

虚拟宠物猫Python程序 虚拟宠物4_碰撞检测_11

  

  将getlocation返回的值导入search road函数,并绑定在帧事件中。通过following来判断是否执行。

    

虚拟宠物猫Python程序 虚拟宠物4_碰撞检测_12

  完成。