06uec++多人游戏【做一个榴弹发射器】

创建一个榴弹发射器类,继承于sweapon类

在该类中声明一个抛射物成员变量

	//发射物
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Weapon")
	TSubclassOf<AActor> ProjectileClass;

 先把父类sweapon的fire函数,声明为virtual

virtual void Fire();

 子类中,覆写这个函数

protected:
	virtual void Fire() override;

定义函数

void ASProjectileWeapen::Fire()
{

	//弹道的起点,我们设置为角色眼睛的位置
	AActor * MyOwner = GetOwner();
	if (MyOwner)
	{	//位置
		FVector EyeLocation;
		//方向
		FRotator EyeRotator;
		//得到眼睛的位置和角度
		MyOwner->GetActorEyesViewPoint(EyeLocation, EyeRotator);
		//计算枪口位置
		FVector MuzzleLocation = MeshComponent->GetSocketLocation("MuzzleSocket");
		//生成参数
		FActorSpawnParameters SpawnParams;
		//参数设置
		SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
		//在枪口处生成抛射物
		GetWorld()->SpawnActor<AActor>(ProjectileClass, MuzzleLocation, EyeRotator, SpawnParams);
	}
}

为发射器类创建蓝图类

给mesh附上launcher

修改launcher骨架上,槽点的位置

 

给发射器创建一个榴弹蓝图

 

 

 添加抛射物移动组件

设置速度

 

设置具有弹性

 

添加一个球体网格,并设为根组件

 

  缩放到0.25

勾上模拟物理

 

然后编写蓝图逻辑

 

 在榴弹枪蓝图指定发射物类型

 玩家这里改成榴弹枪

变量类型换成榴弹枪

 

 测试

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无情的阅读机器

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值