能不能通过C++控制两个static mesh相对运动?

[复制链接]
查看1961 | 回复7 | 2016-7-14 20:06:43 | 显示全部楼层 |阅读模式
能不能通过C++控制两个static mesh相对运动?例如坦克车身和炮塔的相互转动?

UPROPERTY(VisibleDefaultsOnly, Category = Mesh)
                class UStaticMeshComponent* APC_Body;

        UPROPERTY(VisibleDefaultsOnly, Category = Mesh)
                class UStaticMeshComponent* APC_Turret;
这么写以后 在编辑器里面调用蓝图,对应于APC_Body和APC_Turret调用不了静态网格文件



scorpio_b | 2016-7-18 10:44:22 | 显示全部楼层
已经解决了,注意类定义需要继承自Pawn而不是Character。
回复 支持 反对

使用道具 举报

飞天鼠 | 2016-10-9 09:19:10 | 显示全部楼层
楼主 请问这两个网格是怎么分别和你的两个指针对应的呢 我导入的骨骼mesh有名字 但是不知道怎么引用 蓝图自动引用 c++就不会了
回复 支持 反对

使用道具 举报

scorpio_b | 2016-10-9 15:05:47 | 显示全部楼层
飞天鼠 发表于 2016-10-9 09:19
楼主 请问这两个网格是怎么分别和你的两个指针对应的呢 我导入的骨骼mesh有名字 但是不知道怎么引用 蓝图自 ...

我发的这个是static mesh,跟skeletal mesh使用类似。你说的这个两个方法:第一种,你先在C++里写好语句,然后编译后在编辑器中选项框里点击调用你需要的skeletal mesh就行了。第二种,直接把需要调用的骨骼文件目录放到C++里面。我给你分别演示一下:
第一种方法:
[mw_shl_code=cpp,true]public:
        UPROPERTY(Category = Mesh, VisibleDefaultsOnly, BlueprintReadWrite, meta = (AllowPrivateAccess = "true"))
                class UStaticMeshComponent* APC_Body;

        UPROPERTY(Category = Mesh, VisibleDefaultsOnly, BlueprintReadWrite, meta = (AllowPrivateAccess = "true"))
                class UStaticMeshComponent* APC_Turret;

        UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera, meta = (AllowPrivateAccess = "true"))
                class UCameraComponent* FirstCameraComponent;[/mw_shl_code]
第二种方法:
[mw_shl_code=cpp,true]        //资源加载
        static ConstructorHelpers::FObjectFinder<USkeletalMesh> CarMesh(TEXT("/Game/Mesh/8_Wheel.8_Wheel"));
        GetMesh()->SetSkeletalMesh(CarMesh.Object);

        static ConstructorHelpers::FClassFinder<UObject> AnimBPClass(TEXT("/Game/Mesh/Vehicle8W-BP"));
        GetMesh()->SetAnimInstanceClass(AnimBPClass.Class);[/mw_shl_code]
回复 支持 反对

使用道具 举报

scorpio_b | 2016-10-9 15:07:16 | 显示全部楼层
飞天鼠 发表于 2016-10-9 09:19
楼主 请问这两个网格是怎么分别和你的两个指针对应的呢 我导入的骨骼mesh有名字 但是不知道怎么引用 蓝图自 ...

注意一下,第一个方法代码里面我使用static mesh,第二个我用的是skeletal mesh
回复 支持 反对

使用道具 举报

飞天鼠 | 2016-10-9 18:20:06 | 显示全部楼层
scorpio_b 发表于 2016-10-9 15:05
我发的这个是static mesh,跟skeletal mesh使用类似。你说的这个两个方法:第一种,你先在C++里写好语句 ...

非常感谢 楼主 我想用纯c++调用 蓝图的我已经尝试成功 最后的结果要画好多个函数 所以放弃了 我采用你提供的下面的方法 建了一个character类 在beginplay(或tick)里调用 编译成功 但是一执行ue4就crash了 TAT   [mw_shl_code=cpp,true]// Called when the game starts or when spawned
void AMyCharacter::BeginPlay()
{
        Super::BeginPlay();
        static ConstructorHelpers::FObjectFinder<USkeletalMesh> CarMesh(TEXT("/Game/StarterContent/Blueprints/Assets/EyeLeft_Mesh"));
        GetMesh()->SetSkeletalMesh(CarMesh.Object);
}
[/mw_shl_code]

楼主哇 我导入的骨骼类型是skeletalmesh 需要用到skeletalmeshComponent类里的一个函数setmorphtarget做变形效果 GetMesh()->SetSkeletalMesh(CarMesh.Object);这句话完了之后是不是我就可以直接用GetMesh()调用skeletalmeshComponent类里的函数了 因为已经mesh进来了
回复 支持 反对

使用道具 举报

飞天鼠 | 2016-10-9 18:42:16 | 显示全部楼层
飞天鼠 发表于 2016-10-9 18:20
非常感谢 楼主 我想用纯c++调用 蓝图的我已经尝试成功 最后的结果要画好多个函数 所以放弃了 我采用你提 ...

楼主 那个crash我错了 应该放构造里 就是不明白 GetMesh()->SetSkeletalMesh(CarMesh.Object); 这句话把我载入的mesh给谁了 能给某个skeletalmeshComponent对象吗 因为想要调用它里面的函数
回复 支持 反对

使用道具 举报

scorpio_b | 2016-10-9 23:37:52 | 显示全部楼层
飞天鼠 发表于 2016-10-9 18:42
楼主 那个crash我错了 应该放构造里 就是不明白 GetMesh()->SetSkeletalMesh(CarMesh.Object); 这句话把 ...

我用的是车辆的vehicle,你的是character,你去demo看看人家射击那个C++,估计是类的差异性导致问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12

主题

40

回帖

1276

积分

高阶编码师

积分
1276