当前位置: 首页 > news >正文

重庆免费建网站用什么制作网站

重庆免费建网站,用什么制作网站,注册城乡规划师含金量,网站建设未来一.整体思路 首先需要在 想要控制的躯体Pawn上,生成不同相机对应的SpringArm组件。其次是在Controller上,拿到这个Pawn,并在其中设置输入响应,并定义响应事件。响应事件里有指向Pawn的指针,并把Pawn的缩放平移功能进行…

一.整体思路

首先需要在 想要控制的躯体Pawn上,生成不同相机对应的SpringArm组件。其次是在Controller上,拿到这个Pawn,并在其中设置输入响应,并定义响应事件。响应事件里有指向Pawn的指针,并把Pawn的缩放平移功能进行调用。

二.

1.CameraPawn的组件构成

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = MySceneComponent)USceneComponent* MyRoot;UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = MySceneComponent)USpringArmComponent* MySpringArm;UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = MySceneComponent)UCameraComponent* MyCamera;void Zoom(bool Direction, float ZoomSpeed);void Panx(float x);void Pany(float y);void Back();
ACameraPawn::ACameraPawn()
{// Set this pawn to call Tick() every frame.  You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;MyRoot = CreateDefaultSubobject<USceneComponent>(TEXT("MyRootComponent"));MySpringArm = CreateDefaultSubobject <USpringArmComponent>(TEXT("MySpringArmComponent"));MyCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("MySCameraComponent"));RootComponent = MyRoot;MySpringArm->SetupAttachment(MyRoot);MyCamera->SetupAttachment(MySpringArm);MySpringArm->bDoCollisionTest = false;
}

2.将Pawn自己镜头伸缩,平移功能,复原写好

void ACameraPawn::Zoom(bool Direction, float ZoomSpeed) {if (Direction) {if (MySpringArm->TargetArmLength >= 300 && MySpringArm->TargetArmLength < 5000) {MySpringArm->TargetArmLength += (ZoomSpeed * 2);GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("SpringArmLength is %f"), MySpringArm->TargetArmLength));}}else {if (MySpringArm->TargetArmLength > 300 && MySpringArm->TargetArmLength <= 5000) {MySpringArm->TargetArmLength -= (ZoomSpeed * 2);GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("SpringArmLength is %f"), MySpringArm->TargetArmLength));}}
}void ACameraPawn::Panx(float x)
{MyCamera->AddLocalOffset(FVector(0,x,0));
}void ACameraPawn::Pany(float y)
{MyCamera->AddLocalOffset(FVector(0,0,y));
}void ACameraPawn::Back()
{MyCamera->SetRelativeLocation(FVector(0,0,0));
}

 3.在MyPlayerController里面绑定输入映射,以及响应的事件。

	virtual void SetupInputComponent();void WheelUpFunction();void WheelDownFunction();void PanX(float x);void PanY(float y);void Back();

4.绑定映射

void AMyPlayerController::SetupInputComponent()
{Super::SetupInputComponent();InputComponent->BindAction("WheelUp", IE_Pressed, this, &AMyPlayerController::WheelUpFunction);InputComponent->BindAction("WheelDown", IE_Pressed, this, &AMyPlayerController::WheelDownFunction);InputComponent->BindAction("BackXY",IE_Pressed,this,&AMyPlayerController::Back);InputComponent->BindAxis("PanX",this,&AMyPlayerController::PanX);InputComponent->BindAxis("PanY",this,&AMyPlayerController::PanY);//InputComponent->BindAction("ESCEvent", IE_Pressed, this, &AMyPlayerController::ESCEvent).bExecuteWhenPaused=true;//游戏暂停可以执行//InpuptComponent->BindAxis("PanY",this,);
}

5.响应事件,并操控控制到对应的Pawn里的函数。

void AMyPlayerController::WheelUpFunction()
{if (GetPawn()) {ACameraPawn* MyCameraPawn = Cast<ACameraPawn>(GetPawn());if (MyCameraPawn) {MyCameraPawn->Zoom(1, 10);}}
}void AMyPlayerController::WheelDownFunction()
{if (GetPawn()) {ACameraPawn* MyCameraPawn = Cast<ACameraPawn>(GetPawn());if (MyCameraPawn) {MyCameraPawn->Zoom(0, 10);}}
}void AMyPlayerController::PanX(float x)
{if (GetPawn()){ACameraPawn* MyCameraPawn = Cast<ACameraPawn>(GetPawn());if (MyCameraPawn) {MyCameraPawn->Panx(x);}}
}void AMyPlayerController::PanY(float y)
{if (GetPawn()){ACameraPawn* MyCameraPawn = Cast<ACameraPawn>(GetPawn());if (MyCameraPawn) {MyCameraPawn->Pany(y);}}
}void AMyPlayerController::Back()
{if (GetPawn()){ACameraPawn* MyCameraPawn = Cast<ACameraPawn>(GetPawn());if (MyCameraPawn) {MyCameraPawn->Back();}}
}

6.需要在ProjectSetting里面,设置使用的按键。

三.可能需要注意的

1.Pawn这里,需要Poccess。不然会控制不到。

2.SpringArm设置视角的位置。Camera最好都是相对位置为0,这样视角返回默认值可以用。

MyCamera->SetRelativeLocation(FVector(0,0,0));

http://www.yayakq.cn/news/775689/

相关文章:

  • 郑州网站推广价格信息怎么注册自己的微信小程序
  • 厦门网站建设工作室wordpress付费看
  • 企业网站建设建议潍坊网站建设(首选聚搜网络)
  • 网站seo外包公司页面设计的软件
  • 怎么做卡盟网站网站内容资源建设
  • 免费在线观看电视剧的网站wordpress 首页 动
  • 东莞企业怎么做网站建设太原市微网站建设
  • 企业网站建设条件百度智能创作平台
  • 合肥建设企业网站wordpress 程序员主题
  • 免费网站制作 优帮云提高网站浏览量
  • 郑州网站推广优化外包公司备案期间网站关闭
  • 学校要建个网站应该怎么做高清做网站插图
  • 一个微信可以做两个网站支付宝如何加快门户网站建设
  • 陇南地网站seo免费域名申请国外
  • 四川网站建设公司 登录优化网络的软件
  • 如何进行医药网站建设网站建设的部署与发布
  • 天津智能网站建设拓者吧室内设计
  • 酷炫的网站模板免费下载东至网站制作
  • app定制开发网站建设哪个网站做国际生意
  • 长沙雨花区建设局网站有了网站源代码
  • 凡科网站建站后 怎么编辑自己的代码源注册网站备案
  • 公司企业网站建设哪个网站可以做化学实验
  • 网站里怎么做301指向西安网站优化服务
  • 西安网站定制网站开发和合同
  • 网站建设和优化需要几个人wordpress站关注别人
  • 南京html5网站建设展厅设计图片
  • 网站配色与布局 教材企业软件
  • 中山森斯网站建设公司企业做网站认证有哪些好处
  • 面试建设单位在哪个网站wordpress无法连接app
  • 东莞电子网站建设好的logo设计网站