| @ -1,5 +1,7 @@ | ||||
| #include "BlueprintLibrary/BusyAscLibrary.h" | ||||
|  | ||||
| #include "AbilitySystemComponent.h" | ||||
| #include "AbilitySystemGlobals.h" | ||||
| #include "GameplayEffectTypes.h" | ||||
| #include "Gas/BusyGameAbility.h" | ||||
|  | ||||
| @ -18,3 +20,11 @@ AActor* UBusyAscLibrary::GetEffectInstigator(const FGameplayEffectSpec& Spec) | ||||
| 	return Spec.GetEffectContext().GetInstigator(); | ||||
| 	 | ||||
| } | ||||
|  | ||||
| FGameplayEffectSpecHandle UBusyAscLibrary::MakeGameplayEffectSpecHandle(const UAbilitySystemComponent* Asc, const UGameplayEffect* Effect, const float Level) | ||||
| { | ||||
| 	const FGameplayEffectContextHandle ContextHandle = Asc->MakeEffectContext(); | ||||
| 	FGameplayEffectSpec && Spec = FGameplayEffectSpec(Effect, ContextHandle, Level); | ||||
| 	FGameplayEffectSpec* NewSpec = new FGameplayEffectSpec(Effect, ContextHandle, Level); | ||||
| 	return FGameplayEffectSpecHandle(NewSpec); | ||||
| } | ||||
|  | ||||
| @ -2,12 +2,26 @@ | ||||
| #include "AbilitySystemBlueprintLibrary.h" | ||||
| #include "AbilitySystemComponent.h" | ||||
|  | ||||
| UBusyGameAbility::UBusyGameAbility() | ||||
| #pragma optimize("", off) | ||||
| void UBusyGameAbility::OnGiveAbility(const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilitySpec& Spec) | ||||
| { | ||||
| 	Super::OnGiveAbility(ActorInfo, Spec); | ||||
| 	Data = SoftDataAsset.LoadSynchronous(); | ||||
| 	if (Data) | ||||
| 	{ | ||||
| 		Data->TargetAbility = this; | ||||
| 	} | ||||
| 	K2_OnGiveAbility(*ActorInfo, Spec); | ||||
| } | ||||
|  | ||||
| void UBusyGameAbility::K2_OnGiveAbility_Implementation(const FGameplayAbilityActorInfo& ActorInfo, const FGameplayAbilitySpec& Spec) | ||||
| { | ||||
| 	 | ||||
| } | ||||
|  | ||||
|  | ||||
| bool UBusyGameAbility::GetAbilityEffectSpecHandle(const FName& EffectName, const UAbilitySystemComponent* Asc, const int32 Level, | ||||
| 	FGameplayEffectSpecHandle& Handle) const | ||||
|                                                   FGameplayEffectSpecHandle& Handle) const | ||||
| { | ||||
| 	// 1. 查找对应的GameplayEffectClass | ||||
| 	const TSubclassOf<UGameplayEffect> *EffectClass = AbilityEffects.Find(EffectName); | ||||
| @ -25,13 +39,3 @@ bool UBusyGameAbility::GetAbilityEffectSpecHandle(const FName& EffectName, const | ||||
| 	return Handle.IsValid(); | ||||
| } | ||||
|  | ||||
| void UBusyGameAbility::PostInitProperties() | ||||
| { | ||||
| 	Super::PostInitProperties(); | ||||
| 	if (SoftDataAsset) | ||||
| 	{ | ||||
| 		Data = SoftDataAsset.LoadSynchronous(); | ||||
| 		Data->TargetAbility = this; | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -0,0 +1,38 @@ | ||||
| #include "Gas/BusyGameplayEffectSubSystem.h" | ||||
|  | ||||
| #include "GameplayEffect.h" | ||||
| #include "GameplayEffectComponents/TargetTagsGameplayEffectComponent.h" | ||||
|  | ||||
| UGameplayEffect* UBusyGameplayEffectSubSystem::GetTagGrantEffectWithDuration(const FGameplayTagContainer& TagsAdd, | ||||
| 	const FGameplayTagContainer& TagsRemove, const float Duration, const float Period) | ||||
| { | ||||
| 	UGameplayEffect* Effect = nullptr; | ||||
| 	if (EffectsPool.IsEmpty()) | ||||
| 	{ | ||||
| 		Effect = NewObject<UGameplayEffect>(this); | ||||
| 		Effect->Period = Period; | ||||
| 		if (Duration > 0) | ||||
| 		{ | ||||
| 			Effect->DurationPolicy = EGameplayEffectDurationType::HasDuration; | ||||
| 			Effect->DurationMagnitude = FGameplayEffectModifierMagnitude(Duration); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			Effect->DurationPolicy = EGameplayEffectDurationType::Infinite; | ||||
| 		} | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		Effect = EffectsPool.Pop(); | ||||
| 	} | ||||
|  | ||||
| 	FInheritedTagContainer Container; | ||||
| 	UTargetTagsGameplayEffectComponent& Component = Effect->FindOrAddComponent<UTargetTagsGameplayEffectComponent>(); | ||||
|  | ||||
| 	Container.Added = TagsAdd; | ||||
| 	Container.CombinedTags = TagsAdd; | ||||
| 	Container.Removed = TagsRemove; | ||||
| 	Component.SetAndApplyTargetTagChanges(Container); | ||||
| 	return Effect; | ||||
| } | ||||
|  | ||||
| @ -85,8 +85,5 @@ void ABusyPawnBase::BindGameplayTagAddOrRemove(const FGameplayTag& Tag, FGamepla | ||||
| 	); | ||||
| } | ||||
|  | ||||
| void ABusyPawnBase::InitCollision() | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -84,6 +84,7 @@ void UBusyPawnMovement::TickComponent(float DeltaTime, ELevelTick TickType, | ||||
|  | ||||
|  | ||||
| } | ||||
| #pragma optimize("", off) | ||||
|  | ||||
| void UBusyPawnMovement::MoveTick(const float DeltaTime) | ||||
| { | ||||
| @ -121,9 +122,10 @@ void UBusyPawnMovement::MoveTick(const float DeltaTime) | ||||
| 	} | ||||
| 	if (!NewDirection.Equals(LastMoveDirection)) | ||||
| 	{ | ||||
| 		Movable->Execute_OnMoveDirectionChanged(Owner, NewDirection); | ||||
| 		MoveDirectionChangedDelegate.Broadcast(NewDirection); | ||||
| 		LastMoveDirection = NewDirection; | ||||
| 	} | ||||
|  | ||||
| } | ||||
|  | ||||
| void UBusyPawnMovement::SprintTick(const float DeltaTime) | ||||
|  | ||||
| @ -148,41 +148,6 @@ void ALevelPlayerController::SwitchControlledRole(ABusyPlayerRole* Target) | ||||
| 	this->Possess(Target); | ||||
| } | ||||
|  | ||||
| void ALevelPlayerController::OnMove(const FInputActionValue& Value) const | ||||
| { | ||||
| 	AActor* ControlledRole = GetControlledRole(); | ||||
| 	if (!ControlledRole) return; | ||||
|  | ||||
| 	IBusyControllable *Controllable = Cast<IBusyControllable>(ControlledRole); | ||||
| 	if (!Controllable) return; | ||||
|  | ||||
| 	if (FVector2D Position; GetCursorPosition(Position)) | ||||
| 	{ | ||||
| 		Controllable->Execute_OnMove(ControlledRole, Position); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void ALevelPlayerController::OnPrimarySkill(const FInputActionValue& Value) const | ||||
| { | ||||
| 	AActor* ControlledRole = GetControlledRole(); | ||||
| 	if (!ControlledRole) return; | ||||
|  | ||||
| 	if (IBusyControllable *Controllable = Cast<IBusyControllable>(ControlledRole)) | ||||
| 	{ | ||||
| 		Controllable->Execute_OnPrimarySkill(ControlledRole); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void ALevelPlayerController::OnUltimateSkill(const FInputActionValue& Value) const | ||||
| { | ||||
| 	AActor* ControlledRole = GetControlledRole(); | ||||
| 	if (!ControlledRole) return; | ||||
| 	if (IBusyControllable *Controllable = Cast<IBusyControllable>(ControlledRole)) | ||||
| 	{ | ||||
| 		Controllable->Execute_OnUltimateSkill(ControlledRole); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void ALevelPlayerController::OnCameraDetach(const FInputActionValue& Value) | ||||
| { | ||||
| 	if (!RoamingCameraActor) return; | ||||
| @ -223,6 +188,7 @@ void ALevelPlayerController::OnRoleSkillTriggered(FGameplayTag GameplayTag) | ||||
| 	if (UAbilitySystemComponent* Asc = UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(ControlledRole)) | ||||
| 	{ | ||||
| 		FGameplayEventData EventData = FGameplayEventData(); | ||||
| 		EventData.Instigator = ControlledRole; | ||||
| 		Asc->HandleGameplayEvent(GameplayTag, &EventData); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -1,7 +1,9 @@ | ||||
| #pragma once | ||||
| #include "GameplayEffectTypes.h" | ||||
| #include "Kismet/BlueprintFunctionLibrary.h" | ||||
| #include "BusyAscLibrary.generated.h" | ||||
|  | ||||
| class UGameplayEffect; | ||||
| struct FGameplayEffectSpec; | ||||
| class UBusyAbilityDataAssetBase; | ||||
|  | ||||
| @ -15,4 +17,7 @@ public: | ||||
|  | ||||
| 	UFUNCTION(BlueprintCallable) | ||||
| 	static AActor* GetEffectInstigator(const FGameplayEffectSpec& Spec); | ||||
|  | ||||
| 	UFUNCTION(BlueprintCallable) | ||||
| 	static FGameplayEffectSpecHandle MakeGameplayEffectSpecHandle(const UAbilitySystemComponent* Asc, const UGameplayEffect* Effect, const float Level); | ||||
| }; | ||||
|  | ||||
| @ -12,61 +12,64 @@ class UFoxUltimateDataAsset : public UBusyAbilityDataAssetBase | ||||
| { | ||||
| 	GENERATED_BODY() | ||||
| public: | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶消耗", Category="技能消耗") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶消耗", Category="技能消耗", meta=(ScriptName="FirstStageCost")) | ||||
| 	float FirstStageCost = 5.f; | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶消耗", Category="技能消耗") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶消耗", Category="技能消耗", meta=(ScriptName="SecondStageCost")) | ||||
| 	float SecondStageCost = 8.f; | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶消耗", Category="技能消耗") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶消耗", Category="技能消耗", meta=(ScriptName="LastStageCost")) | ||||
| 	float LastStageCost = 12.f; | ||||
|  | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶伤害系数", Category="伤害系数") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶伤害系数", Category="伤害系数", meta=(ScriptName="FirstStageDamageFactor")) | ||||
| 	float FirstStageDamageFactor = 5.f; | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶伤害系数", Category="伤害系数") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶伤害系数", Category="伤害系数", meta=(ScriptName="SecondStageDamageFactor")) | ||||
| 	float SecondStageDamageFactor = 8.f; | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶伤害系数", Category="伤害系数") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶伤害系数", Category="伤害系数", meta=(ScriptName="LastStageDamageFactor")) | ||||
| 	float LastStageDamageFactor = 12.f; | ||||
|  | ||||
| 	 | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶速度系数", Category="速度系数") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶速度系数", Category="速度系数", meta=(ScriptName="FirstStageSpeedFactor")) | ||||
| 	float FirstStageSpeedFactor = 5.f; | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶速度系数", Category="速度系数") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶速度系数", Category="速度系数", meta=(ScriptName="SecondStageSpeedFactor")) | ||||
| 	float SecondStageSpeedFactor = 8.f; | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶一段速度系数", Category="速度系数") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶一段速度系数", Category="速度系数", meta=(ScriptName="LastStageNormalSpeedFactor")) | ||||
| 	float LastStageNormalSpeedFactor = 12.f; | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶二段速度系数", Category="速度系数") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶二段速度系数", Category="速度系数", meta=(ScriptName="LastStageSprintSpeedFactor")) | ||||
| 	float LastStageSprintSpeedFactor = 12.f; | ||||
|  | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="可释放一阶标签", Category="技能标签", meta=(ScriptName="FirstStageCastTag")) | ||||
| 	FGameplayTag FirstStageCastTag; | ||||
| 	 | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="可释放二阶标签", Category="技能标签") | ||||
| 	FGameplayTag SecondStageRecastTag; | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="可释放二阶标签", Category="技能标签", meta=(ScriptName="SecondStageCastTag")) | ||||
| 	FGameplayTag SecondStageCastTag; | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="可释放三阶标签", Category="技能标签") | ||||
| 	FGameplayTag LastStageRecastTag; | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="可释放三阶标签", Category="技能标签", meta=(ScriptName="LastStageCastTag")) | ||||
| 	FGameplayTag LastStageCastTag; | ||||
|  | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶标签", Category="技能标签") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="一阶标签", Category="技能标签", meta=(ScriptName="FirstStageTag")) | ||||
| 	FGameplayTag FirstStageTag; | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶标签", Category="技能标签") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="二阶标签", Category="技能标签", meta=(ScriptName="SecondStageTag")) | ||||
| 	FGameplayTag SecondStageTag; | ||||
| 	 | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶标签", Category="技能标签") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="三阶标签", Category="技能标签", meta=(ScriptName="LastStageTag")) | ||||
| 	FGameplayTag LastStageTag; | ||||
|  | ||||
|  | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="可重新释放时长") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="可重新释放时长", meta=(ScriptName="RecastWindow")) | ||||
| 	float RecastWindow = 6.f; | ||||
| 	 | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="冷却时间") | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="冷却时间", meta=(ScriptName="CooldownTime")) | ||||
| 	float CooldownTime = 15.f; | ||||
| 	 | ||||
| }; | ||||
| @ -10,16 +10,16 @@ class UBusyGameAbility : public UGameplayAbility | ||||
| { | ||||
| 	GENERATED_BODY() | ||||
| public: | ||||
|  | ||||
| 	UBusyGameAbility(); | ||||
| 	virtual void OnGiveAbility(const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilitySpec& Spec) override; | ||||
| 	 | ||||
| public: | ||||
| 	UFUNCTION(BlueprintCallable) | ||||
| 	bool GetAbilityEffectSpecHandle(const FName& EffectName, const UAbilitySystemComponent* Asc, const int32 Level, FGameplayEffectSpecHandle& Handle)const; | ||||
|  | ||||
| 	UFUNCTION(BlueprintNativeEvent) | ||||
| 	void K2_OnGiveAbility(const FGameplayAbilityActorInfo& ActorInfo, const FGameplayAbilitySpec& Spec); | ||||
|  | ||||
| public: | ||||
| 	virtual void PostInitProperties()override; | ||||
| 	UBusyAbilityDataAssetBase* GetData()const { return Data; } | ||||
|  | ||||
| public: | ||||
|  | ||||
							
								
								
									
										21
									
								
								Source/BusyRabbit/Public/Gas/BusyGameplayEffectSubSystem.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								Source/BusyRabbit/Public/Gas/BusyGameplayEffectSubSystem.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #pragma once | ||||
| #include "GameplayTagContainer.h" | ||||
| #include "BusyGameplayEffectSubSystem.generated.h" | ||||
|  | ||||
| class UGameplayEffect; | ||||
|  | ||||
| UCLASS(blueprinttype) | ||||
| class UBusyGameplayEffectSubSystem : public UGameInstanceSubsystem | ||||
| { | ||||
| 	GENERATED_BODY() | ||||
|  | ||||
| public: | ||||
|  | ||||
| 	UFUNCTION(BlueprintCallable, Category = "GameplayEffectSubSystem") | ||||
| 	UGameplayEffect* GetTagGrantEffectWithDuration(const FGameplayTagContainer& TagsAdd, | ||||
| 		const FGameplayTagContainer& TagsRemove, const float Duration, const float Period=0); | ||||
|  | ||||
| private: | ||||
| 	UPROPERTY() | ||||
| 	TArray<UGameplayEffect*> EffectsPool; | ||||
| }; | ||||
| @ -70,10 +70,6 @@ public: | ||||
| 	UFUNCTION(BlueprintCallable) | ||||
| 	void BindGameplayTagAddOrRemove(const FGameplayTag& Tag, FGameplayTagAddOrRemoveDelegate Delegate)const; | ||||
|  | ||||
|  | ||||
| protected: | ||||
| 	void InitCollision(); | ||||
|  | ||||
| protected: | ||||
| 	UPROPERTY(EditDefaultsOnly) | ||||
| 	TObjectPtr<USceneComponent> RootScene;  //场景根组件 | ||||
| @ -85,8 +81,7 @@ protected: | ||||
| 	UPROPERTY(EditDefaultsOnly) | ||||
| 	TObjectPtr<USpineSkeletonRendererComponent> SpineRenderComponent; | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly) | ||||
| 	TObjectPtr<USpineSkeletonAnimationComponent> SpineAnimationComponent; | ||||
|  | ||||
| 	/*-------------------------------------------------------------------*/ | ||||
|  | ||||
| 	/*-----------------------------GAS相关--------------------------------*/ | ||||
| @ -96,6 +91,9 @@ protected: | ||||
| 	/*-------------------------------------------------------------------*/ | ||||
|  | ||||
| public: | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly) | ||||
| 	TObjectPtr<USpineSkeletonAnimationComponent> SpineAnimationComponent; | ||||
| 	 | ||||
| 	/*-------------------------------移动组件------------------------------*/ | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly) | ||||
| 	TObjectPtr<UBusyPawnMovement> MovementComponent; | ||||
|  | ||||
| @ -36,7 +36,7 @@ public: | ||||
|  | ||||
|  | ||||
| UCLASS() | ||||
| class ABusyPlayerRole : public ABusyPawnBase, public IBusyControllable | ||||
| class ABusyPlayerRole : public ABusyPawnBase | ||||
| { | ||||
| 	GENERATED_BODY() | ||||
| public: | ||||
| @ -48,7 +48,7 @@ public: | ||||
|  | ||||
| 	virtual void InitPawnAttributes(const struct FBusyPawnBaseConfig& Config)override; | ||||
| 	 | ||||
|  | ||||
| 	virtual void OnMoveDirectionChanged_Implementation(const FVector2D& InDirection) override {} | ||||
|  | ||||
| protected: | ||||
| 	/*--------------------相机相关--------------------------*/ | ||||
|  | ||||
| @ -34,6 +34,9 @@ enum class EBusyMoveState: uint8 | ||||
| }; | ||||
|  | ||||
|  | ||||
| DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FBusyMoveDirectionChanged, FVector2D, Direction); | ||||
|  | ||||
|  | ||||
| UCLASS() | ||||
| class UBusyPawnMovement : public UActorComponent | ||||
| { | ||||
| @ -99,6 +102,11 @@ public: | ||||
| 	 */ | ||||
| 	void SprintTick(const float DeltaTime); | ||||
|  | ||||
|  | ||||
| public: | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement") | ||||
| 	FBusyMoveDirectionChanged MoveDirectionChangedDelegate; | ||||
| 	 | ||||
| protected: | ||||
| 	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement") | ||||
| 	EBusyMoveState BusyMoveState = EBusyMoveState::None; | ||||
|  | ||||
| @ -5,31 +5,6 @@ | ||||
| #include "LevelPlayerController.generated.h" | ||||
|  | ||||
|  | ||||
|  | ||||
| UINTERFACE(MinimalAPI, Blueprintable) | ||||
| class UBusyControllable: public UInterface | ||||
| { | ||||
| 	GENERATED_BODY() | ||||
| }; | ||||
|  | ||||
| class IBusyControllable | ||||
| { | ||||
| 	GENERATED_BODY() | ||||
| public: | ||||
| 	// 角色移动 | ||||
| 	UFUNCTION(BlueprintNativeEvent, BlueprintCallable) | ||||
| 	void OnMove(const FVector2D& Location); | ||||
|  | ||||
| 	// 角色普通技能 | ||||
| 	UFUNCTION(BlueprintNativeEvent, BlueprintCallable) | ||||
| 	void OnPrimarySkill(); | ||||
|  | ||||
| 	// 角色大招 | ||||
| 	UFUNCTION(BlueprintNativeEvent, BlueprintCallable) | ||||
| 	void OnUltimateSkill(); | ||||
| }; | ||||
|  | ||||
|  | ||||
| class ABusyPlayerRole; | ||||
| struct FInputActionValue; | ||||
|  | ||||
| @ -116,15 +91,6 @@ public: // 输入相关 | ||||
| 	TArray<FBusySkillActionConfig> RoleSkillActions; | ||||
|  | ||||
| public: | ||||
| 	UFUNCTION() | ||||
| 	void OnMove(const FInputActionValue& Value)const; | ||||
|  | ||||
| 	UFUNCTION() | ||||
| 	void OnPrimarySkill(const FInputActionValue& Value)const; | ||||
|  | ||||
| 	UFUNCTION() | ||||
| 	void OnUltimateSkill(const FInputActionValue& Value)const; | ||||
|  | ||||
| 	UFUNCTION() | ||||
| 	void OnCameraDetach(const FInputActionValue& Value); | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user