创建一个榴弹发射器类,继承于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
勾上模拟物理
然后编写蓝图逻辑
在榴弹枪蓝图指定发射物类型
玩家这里改成榴弹枪
变量类型换成榴弹枪
测试