請教 InputComponent 數值

3
回复
173
查看
[复制链接]

该用户从未签到

33

主题

107

帖子

253

积分

初阶编码师

积分
253
发表于 2019-7-11 17:10:59 | 显示全部楼层 |阅读模式
請教一下
我正在試圓形的選擇系統,但卡在一個座標的問題
X軸左是推到底是-1,右是1,中間的數值是希望是-1到1之間的浮點數,,Y軸也是
打算用這X軸Y軸的數值當坐標,來換算角度,但就是這組座標產生問題,可以幫我看如何修正嗎


PlayerInputComponent->BindAxis("RightAxi_X", this, &ACharacterBase::RightAxi_X);
PlayerInputComponent->BindAxis("RightAxi_Y", this, &ACharacterBase::RightAxi_Y);


void ACharacterBase::RightAxi_X(float value)
{
    if ((Controller != NULL) && value != 0.0f)
    {
        PointerX = GetInputAxisValue("RightAxi_X");
        GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString:rintf(TEXT("ointerX ,PointerY: %d , %d"), PointerX, PointerY));
    }
}

void ACharacterBase::RightAxi_Y(float value)
{
    if ((Controller != NULL) && value != 0.0f)
    {
        PointerY = GetInputAxisValue("RightAxi_Y");
        GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString:rintf(TEXT("ointerX ,PointerY: %d, %d"), PointerX, PointerY));
    }
}


這是我目前的語法,但實跑過之後 PointerX 和 PointerY ,兩個數值都不對
+-的數值也不對,我在ue4的 Input 的 scale 數值是設1


该用户从未签到

35

主题

348

帖子

402

积分

初阶编码师

积分
402
发表于 2019-7-12 08:17:30 | 显示全部楼层
本帖最后由 mknmknmk 于 2019-7-12 08:21 编辑

有啥不对的  绑定action 还是 axis
action 按下和抬起触发, axis 是一直触发


你的PointX 和PointY 永远不会是0
回复

使用道具 举报

该用户从未签到

33

主题

107

帖子

253

积分

初阶编码师

积分
253
 楼主| 发表于 2019-7-12 16:30:40 | 显示全部楼层
是嗎
我還以為他對應的數值是我在Input設的scale的值
這樣的話我就想不出什麼方法來抓了

我現在是先把X、Y軸設死,按下執行  PointerY = -1 ,按上執行 PointerY = 1, 放開 PointerY = 0
X軸也是同理的,也是可以抓的到這九個點位置,但又會卡到像25度,55度的角度,這些判斷上也有些問題
目前就是卡這點
回复

使用道具 举报

该用户从未签到

35

主题

348

帖子

402

积分

初阶编码师

积分
402
发表于 2019-7-15 08:21:33 | 显示全部楼层
PlayerInputComponent->BindAxis("RightAxi_X", this, &ACharacterBase::RightAxi_X);
PlayerInputComponent->BindAxis("RightAxi_Y", this, &ACharacterBase::RightAxi_Y);


void ACharacterBase::RightAxi_X(float value)
{
    if (Controller != NULL)
    {
        PointerX = value ;
        GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString:rintf(TEXT("ointerX ,PointerY: %d , %d"), PointerX, PointerY));
    }
}

void ACharacterBase::RightAxi_Y(float value)
{
    if (Controller != NULL)
    {
        PointerY = value;
        GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString:rintf(TEXT("ointerX ,PointerY: %d, %d"), PointerX, PointerY));
    }
}
回复

使用道具 举报

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

本版积分规则

凝聚梦想 共创未来 用心服务开发者
意见反馈邮箱:engineworld@qq.com

扫一扫捐助我们

Powered by 引擎世界中文社区™®© 2014-2017 Engine World Inc.( 陕ICP备16015879号-4 )