s
s
我的ue4也崩了,跟老师的一样。。
总结:
1.UE4工具将项目启动的时候,有时候总是提示类似classid的错误,每次都需要删除【项目名\Saved\Crashes】下的文件,再重新启动,但是不是每次都好用。
目前找到个方法-->>在【编辑-->项目设置-->描述】里有个【项目ID】给设置成【无效化】,基本上不出现类似的错误。
2.在写完C++代码,编译后如果出错,一定不能运行,程序崩溃,好像项目再也启动不起来了,不得不重新建项目,所有的重新来做。
3.C++里有代码下边红线的(此时试试重复添加UE4引用,可能会将红线消除掉),如果编译没有问题,应该可以执行运行,目前是这样。
pitch=y
yaw=z
roll=x
end键————落地快捷键
步长、捕捉
如何解决崩溃问题,在文件夹中可删除文件
.vs
Binaries
Intermediate
Save()
以及VS工程
如果还是不行的话,可以把原文件中的Content中
一个文件中Content以及Source不能删除,主要的东西在这两个文件夹中
由于版本的不同,在GetWorld()出现了问题,应当这样修改
在.h中加上头文件#include"Runtime/Engine/Classes/Kismet/GameplayStatics.h"
在AActor* DefaultPawn;后面添加
ATutorialsPlayerController* TutorialsPlayerController = Cast<ATutorialsPlayerController>(PlayerController);
这样可以获取PlayController对象。
在这里需要用Fn+End建 落地建是落在他下面的物体上面
Ctrl +N 新建关卡
Ctrl+S 保存关卡
Backspace 直接可以删除物体
上一节是绑定了抓取物品:
现在要移动物品:
if(PhysicsHandle && PhysicsHandle->GrabbedComponent)
{
PhysicsHandle->SetTargetLocation(GetLineEnd());
}
PhysicsHandle ->ReleaseComponent();
射线检测:
FHitResult Hit;
GetWorld()->LineTraceSingleByObjectType
(
Hit,
Start,
End,
FCollisionObjectQueryParams(ECollisionChannel::ECC_PhysicsBody),
FCollisionQueryParam(FName(TEXT("")), false, GetOwner())
);
射线检测:
FVector Start; //射线起点
FRotator ViewRotator;
GetWorld()->GetFirstPlayerController()->GetPlayerViewPoint(Start, ViewRotator);
FVector End = Start + ViewRotator.Vector() * 100(cm);
DrawDebugLine(GetWorld(), start, end, FColor(255,0,0), false, 0, 0, 10);//画辅助线
选中默认Pawn,蓝图功能中转换选择的Actor为蓝图类。
创建蓝图类后,将其放到场景中,此时默认Pawn还是会被创建。这里需要去项目设置中,地图和模式选项,DefaultPawnClass
创建新的GameMode
指定DeaultPawnClass
LastDoorOpenTime = GetWorld()->GetTimeSeconds();获取时间
tick中判断 TriggerVolume->IsOverlappingAcor是否出发Actor
(效率不高)
world中存储着所有的Actor和Controller之类的
所以我们需要的一切应该都可以通过world来得到
DefaultPawn = GetWorld()->getFirstPlayerController()->getPawn();
他这个defaultPawn也是在类中增加了一个指针.....
是不是随用随获取好一点
而且初始化操作放在BeginPlay中了 ,估计是因为对象创建的时候还没有创建玩家。
1.将触发器绑定到了OpenDoor控件中,作为一个成员变量,同时使用UPROPERTY(EditAnywhere)在蓝图中进行指定(绑定操作,赋值操作)
2.想产生联系:就指针弄个归属关系......
pitch = y
yaw = z
roll = x
1.如何获取绑定到的Actor对象
GetOwner:从Component继承来的
也就是说归属关系已经被Actor和Component封装好了
2.如何出发开关门事件
新建组件:继承自UActorComponent
启动时调用BeginPlay
每帧调用 TickComponent
按住alt移动是复制一个