zoukankan      html  css  js  c++  java
  • 模仿黑魂锁定目标功能

        if (bLocked)
        {
            //取消锁定状态
            bLockedTarget = false;
            bUseControllerRotationYaw = false;
            GetCharacterMovement()->bOrientRotationToMovement = true;
        }
        else
        {
            //锁定目标
            bLockedTarget = true;
            bUseControllerRotationYaw = true;
            GetCharacterMovement()->bOrientRotationToMovement = false;
    
            //计算最近的目标
            TArray<AActor*> TempActorArray;
            CharacterVisualField->GetOverlappingActors(TempActorArray);
            CharacterNearbyMonster.Reset();
            for (int i = 0; i < TempActorArray.Num();++i)
            {
                AMonster *TempActor=Cast<AMonster>(TempActorArray[i]);
                if (TempActor&&!TempActor->IsPendingKill())
                {
                    CharacterNearbyMonster.Add(TempActor);
                }
            }
    
            if (CharacterNearbyMonster.Num()>0)
            {
                LockedTargetObject = CharacterNearbyMonster[0];
                for (int i = 1; i<CharacterNearbyMonster.Num(); ++i)
                {
                    FVector temp = ((AMonster*)CharacterNearbyMonster[i])->GetActorLocation() - GetActorLocation();
                    temp.Normalize();
                    
                    FVector CurrenLockedTargetVector = LockedTargetObject->GetActorLocation() - GetActorLocation();
                    CurrenLockedTargetVector.Normalize();
    
                    if (FVector::DotProduct(CurrenLockedTargetVector, FollowCamera->GetForwardVector()) < FVector::DotProduct(temp, FollowCamera->GetForwardVector()))
                    {
                        LockedTargetObject = CharacterNearbyMonster[i];
                        
                    }
                    
                }
            }
        }

    直接上代码,还有很多地方可以优化,仅供抛砖引玉,效果如图

  • 相关阅读:
    jmeter使用教程
    Jmeter的好搭档Badboy的安装与简单使用
    十大编程算法助程序员走上高手之路
    polyfillJS生成promise对象
    js+canvas实现滑动拼图验证码功能
    WebAssembly介绍
    解释器与编译器
    使用axios优雅的发起网络请求
    【javascript】script标签的async异步解析
    sass用法快速入门
  • 原文地址:https://www.cnblogs.com/blueroses/p/5625032.html
Copyright © 2011-2022 走看看