5596人加入学习
(18人评价)
【旧版】Unreal初级课程 - 3D吃豆人

旧版课程,制作完成于2018-03-29,基于Unreal 4.18

价格 免费

PacManCharacter.cpp

void APacManCharacter::MoveXAxis(float AxisValue)
{
	// 只有游戏开始的时候才能移动
	if (GameMode->GetCurrentState() == EGameState::EPlaying)
	{
		CurrentVelocity.X = AxisValue;
		AddMovementInput(CurrentVelocity);
	}
}

void APacManCharacter::MoveYAxis(float AxisValue)
{
	// 只有游戏开始的时候才能移动
	if (GameMode->GetCurrentState() == EGameState::EPlaying)
	{
		CurrentVelocity.Y = AxisValue;
		AddMovementInput(CurrentVelocity);
	}
}

Enemy.cpp

AEnemy::AEnemy()
{
	// 启用碰撞函数
	SetActorEnableCollision(true);
}
void AEnemy::BeginPlay()
{
	Super::BeginPlay();
	// 注册碰撞函数
	GetCapsuleComponent()->OnComponentBeginOverlap.AddDynamic(this, &AEnemy::OnCollision);
}

// 是否移动
void AEnemy::SetMove(bool bMoveIt)
{
	// 获得AI
	// 最后括号里面的AIControllerClass弃用 换成 GetController()
	AAIEnemy* AI = Cast<AAIEnemy>(GetController());
	// 移动
	if (bMoveIt)
	{
		// 找下一个点
		AI->SearchNewPoint();
	}
	else
	{
		// 停止移动
		AI->StopMove();
	}
}

项目设置---引擎---Collision---新建对象通道

新建通道:

Preset:

新建

新建概述文件:

只需要和墙、地板发生碰撞,静态

Block :区块

区块:就是阻碍的意思

 

 

EnemyBody---碰撞预设值 改成 Enemy

CapsuleComponent---碰撞预设值 也改成 Enemy

 

解决场景中的敌人不移动的办法:

把场景中的敌人都删除,然后再重新拖入试一下

这样场景中的敌人就可以移动了

 

注册碰撞函数

启用碰撞函数:

主角的碰撞预设值是:Pawn

重叠:Overlap,一致才能发生作用

 

[展开全文]

授课教师

SIKI学院老师

课程特色

图文(1)
下载资料(1)
视频(30)

学员动态

bksy 加入学习
lisa555 加入学习
花点不开就不开 加入学习