U4初步使用整理(四)Pawn简单操作

本文介绍了Pawn在游戏开发中的基本使用,包括其作为Actor的继承特性,如何设置吸收玩家输入,特别是通过EAUTO_RECEIVE_INPUT::Player0来指定玩家控制的Pawn。此外,还探讨了UPROPERTY如何使代码变量在编辑器中可见,并允许在不重启场景的情况下进行配置。最后,提供了一个实例,展示了如何控制Pawn的移动和形变。
摘要由CSDN通过智能技术生成

Pawn继承与aactor,能通过玩家输入和ai驱动。

AutoPossessPlayer = EAutoReceiveInput::Player0;设置吸收输入的pawn,添加多个此类pawn,Player0取得是最新添加到场景中的pawn.
UPROPERTY属性可以让代码中变量在ed中可见,同时不会每次跑场景都重新设置变量,赋予EditAnywhere属性可以在编辑器中赋值。

一个控制pawn移动和形变的例子。

    UCLASS()
    class BASICPROJ_API AMyPawn : public APawn
    {
        GENERATED_BODY()

    public:
        // Sets default values for this pawn's properties
        AMyPawn();

        // Called when the game starts or when spawned
        virtual void BeginPlay() override;

        // Called every frame
        virtual void Tick( float DeltaSeconds ) override;

        // Called to bind functionality to input
        virtual void SetupPlayerInputComponent(class UInputComponent* InputComponent) override;


    private:
        void MoveX(float delta);
        void MoveY(float delta);
        void StartGrow();
        void StopGrow();

        FVector CurrentVelocity;
        bool bGrowing;
在C++游戏中,玩家输入控制Pawn(棋盘游戏中的小兵角色)通常涉及到键盘事件监听和游戏角色的移动逻辑。以下是一个简化的示例,展示了如何在控制台上实现基本的玩家输入控制Pawn的移动: 首先,你需要包含必要的头文件,并设置一些基本的数据结构和变量,比如Pawn的位置和移动方向。 ```cpp #include <iostream> #include <conio.h> // 对于Windows平台,用于键盘输入 class Pawn { private: int x, y; // Pawn的坐标 int moveDirection; // 移动的方向,0代表上下,1代表左右 }; Pawn pawn; ``` 然后,你可以创建一个函数来处理用户输入: ```cpp void handleUserInput() { if (_kbhit()) { // 检查是否有按键按下 switch (_getch()) { case 'W': pawn.moveDirection = 0; // 上方 case 'S': pawn.moveDirection = 0; // 下方 case 'A': pawn.moveDirection = 1; // 左方 case 'D': pawn.moveDirection = 1; // 右方 // 更复杂的移动处理... } } } // 更新Pawn位置的方法 void updatePawnPosition() { if (pawn.moveDirection == 0) { pawn.y += pawn.moveDirection == 1 ? -1 : 1; } else { pawn.x += pawn.moveDirection == 1 ? -1 : 1; } // 确保不会超出游戏地图边界... } ``` 最后,将这两个函数结合到游戏主循环中: ```cpp int main() { while (true) { handleUserInput(); updatePawnPosition(); // 渲染 Pawn 的新位置或其他游戏逻辑... } return 0; } ``` 这只是一个基础的框架,实际项目中还需要处理更多的细节,比如碰撞检测、限制移动范围等。同时,对于图形界面的游戏,键盘输入的处理可能会更复杂,涉及鼠标和窗口管理库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值