1.把枪Detach掉:DetachFromActor

3个都选择“Keep World”

2.模拟物理

3.给一个向前的速度

4.切枪,到上一个武器,或者捡起脚底下的武器

注意Get Component by Class的搜索范围:因为是在weapon枪支组件内部调用该方法,因此搜索范围仅限于weapon的内部组件。weapon的子类都添加有Mesah的组件。

StaticMesh继承与MeshComponent

这里的“Mesh”也是“StaticMesh”组件,因此可以搜索到weapon子类里面的Mesh对象

模拟物理引起的问题:因为设置的是组件子节点模拟物理,所以扔出去的枪模型跟组件坐标位置不重叠。

解决这样的问题的办法是:把跟根节点设置为StaticMesh并设置模拟物理:

1.添加一个Static Mesh组件,并命名为Root

 

2.拖拽创建好的Root,拖放到默认生成出来的“DefaultSceneRoot”上面,Root组件就会变成跟根组件了。

 

3.根节点Root的“Static Mesh”如果为空的话,模拟物理是无效的。

4.可以添加一个很小很小的Static Mesh:在地图场景中添加一个 Box Brush,设置长宽高为0.1,并转换成 Static Mesh,命名为 Small Mesh

5.设置Root的Static Mesh为上一步创建好的SmallTaticMesh。虽然界面上的“Simulate Physics(模拟物理)”还是不能使用,但是通过蓝图函数是有效的。

6.Get Component by Class是从组件根节点往下开始搜索,只要找到一个符合条件的组件就立即返回,所以这里会返回Root组件。

不会返回这里的Mesh组件

7.这样扔掉的枪的坐标就跟枪模型重叠了。

8.要先执行“开启碰撞”,再执行“开启模拟物理”,顺序不能反。如果顺序反了,枪就会掉下的时候会穿过地板,不会停留在地板上面。

9.扔掉的首先手枪准心跟刀的准心一起出现了。

因此还要执行“OnUnEquip”操作去掉扔掉枪的准心。

这样就只剩下刀的准心了。

10.为了方便设置枪模型的碰撞,因此在武器基类“Weapon”根节点下添加一个Static Mesh组件(命名为Mesh)替换在每个子武器类中添加的Satic Mesh组件(原来的名称也叫Mesh)。设置碰撞预设为“Custom”,把“Pawn(人物角色)”设为“Ignore(忽略)”

这样,当人走到碰到扔掉的枪的时候,枪就不会被弹飞出去了。

[UE4]扔枪的更多相关文章

  1. [UE4]扔枪后捡枪:Get Overlapping Actors

    一.搜索碰撞体是否碰撞到枪,使用Get Overlapping Actors,只搜索Class Filter设置的对象类型.Get Overlapping Actors没有Class Filter参数 ...

  2. [UE4]把枪打飞addImpulse

    一.武器如果没有开启模拟物理,会漂浮在空中 二.武器开启模拟物理,运行游戏的时候就会掉到地上了.之所以要加“Delay”延迟,是因为创建武器在先(没有持有人),持有武器动作在后,加上“delay”延迟 ...

  3. [UE4]捡枪

    一.给角色添加碰撞胶囊体并添加On Component Begin Overlap事件 二.检查碰到的东西是不是武器 三.要捡的武器是否已经有主人.检查身上是否有同样类型的枪 五.把枪放到背包数组.关 ...

  4. [UE4]把枪抽象为一个类

  5. [UE4]解决角色影子的问题

    一.自己应该是不能看到第一人称模型的影子,只要将第一人称模型影子不投影的就可以了.Cast Shadow勾选去掉就不会有影子了. 二.在第一人称视角中,枪支也是不应该有投影的.在weanpon中新增2 ...

  6. [UE4]手持多把枪的位置调节

    如果一个角色有多把枪,但是骨骼插槽只有一个,可以通过直接在枪蓝图中调整枪的位置和旋转角度.

  7. [UE4]Drop,扔物品

    一.Drop只要将Grab做的操作反着这一遍就可以:开启模拟物理.取消附加(使用:DetachFromActor方法,同样的rule也需要使用Keep World) 二.

  8. [UE4]创建多把枪,使用Class,参数的对象类型

    先来说说函数输入参数的区别: 1.Object Reference 2.Class Reference 会出现可以让你选择一个类 3.Soft Object Reference 4.Soft Clas ...

  9. [UE4]角色增加挂点、增加枪

    人物骨骼增加Socket(骨骼) 增加手持武器预览: 角色蓝图增加组件“Skeletal Mesh”(好像这叫骨骼模型吧),并拖放至人物“Mesh”下面作为子组件. 选中刚建好的“SkeletalMe ...

随机推荐

  1. 如何将centos7作为DNS服务器

    简单来说,dns服务器是起到缓存的作用.比如说我们第一次dig www.baidu.com的时候,dns服务器因为没有解析过百度地址,所以它需要向上一级dns服务器进行查询,然后查询结果会缓存在这台d ...

  2. zabbix使用自定义key进行监控

    我的zabbix-server是安装在另一台虚拟机上的,用来监控下图中的这台虚拟机 先修改zabbix的客户端配置文件,增加UserParameter那行,这里我只是用来测试,所以就随便起了一个名为p ...

  3. python简单实现目录对比

    [root@localhost python]# cat dircmptest.py #!/usr/bin/python import filecmp path1="/root/python ...

  4. 监控文件事件inotify

    #include<sys/inotify.h> int inotify_init(void);//创建一个新的inotify实例,成功会返回一个文件描述符fd int inotifyk_a ...

  5. linux 条件

    1.文件状态测试-d 目录 -r 可读-f 常规文件 -w 可写-L 符号连接 -x 可执行-s 文件长度大于0,非空 -u 文件有suid位设置 示例: [ -s haison.c ] 0表示成功, ...

  6. sqler sql 转rest api 的docker image

    最新sqler 又发布了一个版本,同时官方文档也更新,对于数据库的连接有了详细的说明 Dockerfile 为了方便以及减少大小,使用多阶段构建,同时都通过环境变量运行 FROM alpine:lat ...

  7. Gravitee.io alert 引擎架构

    alert 在我们的实际开发中应用的场景很多,我们需要进行系统状态的查看,以及特殊异常请求的处理 参考架构图 从下图可以看出,还是很方便的,同时支持slack email... 的实时消息通知,而且我 ...

  8. 【Hi3516】 uboot下烧写BSP

    setenv serverip xx.xx.xx.xx setenv ipaddr xx.xx.xx.xx setenv ethaddr xx:xx:xx:xx:xx:xx setenv netmas ...

  9. 笔记:Javascript 会提升变量声明

    笔记:Javascript 会提升变量声明 Javascript 会自动提升变量声明,但不会提升变量赋值. 如下代码, 按 F12 控制器显示的是 Hello, undefined 说明只是把 b 了 ...

  10. mongodb之 oplog 日志详解

    1:oplog简介 oplog是local库下的一个固定集合,Secondary就是通过查看Primary 的oplog这个集合来进行复制的.每个节点都有oplog,记录这从主节点复制过来的信息,这样 ...