UE4实现VR下匕首攻击的方法

VR下实现匕首的功能,需求如下:

1,玩家可以拿着一把匕首攻击怪物,攻击的伤害,依据玩家攻击时的速度,和攻击到怪物的部位决定

2,攻击到怪物的位置会播放一个溅血的特效

3,在比较短暂的时间内,玩家攻击的动作必须要具有一定的幅度才会有伤害,也就是说,在攻击到怪物时,玩家持刀的手臂必须做一定距离的运动.

作此限制,是为了避免接触怪物即造成伤害,以至于玩家只需要不断的微小移动手臂就可以反复攻击

这里的几个难点如下:

一,如何判断匕首攻击到怪物的具体位置和部位呢?

首先想到的是通过设置Collison Response为Block来解决的, 如果这样做,那么刀与玩家自身以及世界中的物体产生碰撞时,刀就会影响被碰撞物体的运动,这是不想看到的.

那么可否设置Collison Response不为Overlap呢,这样设置,刀不会影响物体的运动,可以插入到物体中,可是Overlap时得到的HitResult却不含有Location以及BoneName.

最后想到可以使用BoxTraceByChannel来解决,如下图所示

每隔一段时间执行一次BoxTraceByChannel就可以获得碰撞信息

注:途中的Box是一个BoxCollison,使用它的形状包围刀,方便设置和调整,如下图所示

二,如何判断玩家在攻击到怪物之前的一段时间内是否有一定幅度的运动呢?

再具体一下上述问题中的时间和幅度,假设时间是0.5s,距离是0.5m.

那么问题就转化为:如何确定玩家在攻击到怪物的0.5s时间内,玩家距离攻击位置的最大距离超过0.5m

也就是说,我们需要知道在攻击到怪物之前的0.5s内,玩家的移动位置,然后找出距离攻击位置最大的,如果超过0.5m,此次攻击是有效的.

因为我们不知道玩家何时会攻击到怪物,所以我们必须保存玩家当前时刻之前的0.5s内的所有位置,我们可以保存20个,那么0.5/20 = 0.025s/个,

也就是每隔0.025s采集一下玩家手臂的位置循环保存到一个长度20的数组里即可.

时间: 2024-10-11 20:24:39

UE4实现VR下匕首攻击的方法的相关文章

实现在VR下使用手柄来操作UMG

当前使用的UE4 12.5 硬件:HTC Vive 如何实现在VR下使用手柄来操作UMG呢? 当前有两个核心需求: 1,当手柄指向UMG控件时,UMG控件会有hover的效果 2,当手柄Trigger键按下时,触发UMG控件按下功能 好在已经有VRUMGPlugin插件可以研究.VRUMGPlugin插件没有实现hover的效果,而且此插件在处理点击事件时,有Bug,花了好几天去修改,最后还是失败而告终. 不过好消息是,UE4 13.1已经支持VR下使用UMG了,官方是实现了WidgetInte

网络转载:局域网安全:解决ARP攻击的方法和原理

局域网安全:解决ARP攻击的方法和原理 IT世界网2006-01-26 10:17 [故障原因] 局域网内有人使用ARP欺骗的木马程序(比如:传奇盗号的软件,某些传奇外挂中也被恶意加载了此程序). [故障原理] 要了解故障原理,我们先来了解一下ARP协议. 在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的.ARP协议对网络安全具有重要的意义.通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞. ARP协议是“Address Re

Linux系统采用netstat命令查看DDOS攻击的方法

Linux系统采用netstat命令查看DDOS攻击的方法 来源:互联网 作者:佚名 时间:07-05 15:10:21 [大 中 小] 这篇文章主要为大家介绍了Linux系统采用netstat命令查看DDOS攻击的方法,对于网络安全而言非常重要!需要的朋友可以参考下 Linux系统用netstat命令查看DDOS攻击具体命令用法如下: 复制代码 代码如下: netstat -na 显示所有连接到服务器的活跃的网络连接 复制代码 代码如下: netstat -an | grep :80 | so

DDOS、CC、sql注入,跨站攻击防御方法

web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 http://nic.swu.edu.cn/s/nic/thyt/20180604/2555404.html 1.1 DDos介绍 DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”.分布式拒绝服务攻击发起后,攻击网络包就会从很多DOS攻击源(俗称

linux下shell脚本执行方法及exec和source命令

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两类:外部命令和内部命令.外部命令是通过系统调用或独立的程序实现的,如sed.awk等等.内部命令是由特殊的文件格式(.def)所实现,如cd.history.exec等等. 在说明exe和source的区别之前,先说明一下fork的概念. fork是linux的系统调用,用来创建子进程(child

PHP环境下Memcache的使用方法

原文:PHP环境下Memcache的使用方法 原文地址:http://www.2cto.com/kf/201503/384967.html 如今互联网崛起的时代,各大网站都面临着一个大数据流问题,怎么提高网站访问速度,减少对数据库的操作:作为PHP开发人员,我们一般能想到的方法有页面静态化处理.防盗链.CDN内容分发加速访问.mysql数据库优化建立索引.架设apache服务器集群().还有就是现在流行的各种分布式缓存技术:如memcached/redis: 1.什么是Memcached? a.

Bootstrap历练实例:下拉菜单插件方法的使用

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Bootstrap历练实例:下拉菜单插件方法的使用</title> <meta charset="utf-8" /> <meta name="v

chrome 下改动 agent 的方法

前言 这篇文章和 tiankonguse 的个人站点里的文章保持同步. 非常早之前,在 chrome 下改动 agent 的方法是使用 chrome 插件. 后来 chrome 的某一个版本号中自带这个功能了. 在后来 chrome 的版本号中又没有这个功能了. 所以如今我须要找到一个能够改动当前版本号的 chrome 的 agent 的方法了. 正文 自带的改动agent的方法 搜索的第一个方法是讲的使用 chrome 自带的改动 agent 的功能. 在 在不使用扩展的情况下改动 Chrom

【翻译自mos文章】rhel 5下禁用SElinux的方法

rhel 5下禁用SElinux的方法: 参考自: How to Disable or set SELinux to Permissive mode (文档 ID 457458.1) Edit /etc/selinux/config ?Change the SELINUX value to "SELINUX=disabled". ?Reboot the server. 在RHEL5.8 的 文本安装过程中,是没有关于selinux的设置的,因此在一个人安装os后,另外一个人去安装ora