• 模仿黑魂锁定目标功能


        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];
                        
                    }
                    
                }
            }
        }

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

  • 相关阅读:
    事务
    XML小总结
    java中array,arrayList,iterator;
    MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)
    RHCE7认证学习笔记17——KickStart安装系统
    CentOS中安装MySQL数据库
    centos下搭建svn服务器端/客户端
    AWS安装CDH5.3-CentOS6.4中关键操作步骤
    AWS安装CDH5.3-CentOS6.4
    [转]Servlet 工作原理解析
  • 原文地址:https://www.cnblogs.com/blueroses/p/5625032.html
Copyright © 2020-2023  润新知