Take damage, destruct mesh if damage is enough: // Take damage UFUNCTION(BlueprintCallable, Category="Components|Destructible") virtual void UDestructibleComponent::ApplyDamage(float DamageAmount, const FVector& HitLocation, const FVector& ImpulseDir, float ImpulseStrength) override; // Take radius damage UFUNCTION(BlueprintCallable, Category="Components|Destructible") virtual void UDestructibleComponent::ApplyRadiusDamage(float BaseDamage, const FVector& HurtOrigin, float DamageRadius, float ImpulseStrength, bool bFullDamage) override;

Continue reading

原文:https://blog.csdn.net/xyznol/article/details/51261692 git运行突然提示 Auto packing the repository in background for optimum performance 查资料,原来是自己本地一些 “悬空对象”太多(git删除分支或者清空stash的时候,这些其实还没有真正删除,成为悬空对象,我们可以使用merge命令可以从中恢复一些文件) 解决: 1.输入命令:git fsck --lost-found,可以看到好多“dangling commit”。 2.清空他们:git gc --prune=now,完成。

Continue reading

原文:https://www.cnblogs.com/kevingrace/p/5896706.html 使用下面的关系区别这两个操作: git pull = git fetch + git merge git pull --rebase = git fetch + git rebase 现在来看看git merge和git rebase的区别。 假设有3次提交A,B,C。 在远程分支origin的基础上创建一个名为”mywork”的分支并提交了,同时有其他人在”origin”上做了一些修改并提交了。 其实这个时候E不应该提交,因为提交后会发生冲突。如何解决这些冲突呢?有以下两种方法: git merge 用git pull命令把”origin”分支上的修改pull下来与本地提交合并(merge)成版本M,但这样会形成图中的菱形,让人很困惑。 git rebase 创建一个新的提交R,R的文件内容和上面M的一样,但我们将E提交废除,当它不存在(图中用虚线表示)。由于这种删除,小李不应该push其他的repository.rebase的好处是避免了菱形的产生,保持提交曲线为直线,让大家易于理解。 在rebase的过程中,有时也会有conflict,这时Git会停止rebase并让用户去解决冲突,解决完冲突后,用git add命令去更新这些内容,然后不用执行git-commit,直接执行git rebase –continue,这样git会继续apply余下的补丁。 在任何时候,都可以用git rebase –abort参数来终止rebase的行动,并且mywork分支会回到rebase开始前的状态。

Continue reading

Problem: There’s a bug that DestructibleComponent isn’t affectd by SetActorEnableCollision or SetCollisionEnabled. Solution: Add a custom Component inherit from DestructibleComponent, then override two functions: OnActorEnableCollisionChanged, SetCollisionEnabled // Copyright 2015 inbetweengames #include "ProjectDisco.h" #include "DADestructibleComponent.h" void UDADestructibleComponent::OnActorEnableCollisionChanged() { // Update physical properties of the chunks in the mesh if the body instance is valid FBodyInstance* BodyInst = GetBodyInstance(); if (BodyInst) { BodyInst->UpdatePhysicsFilterData(); } // Update physical properties for individual bone instances as well if (SkeletalMesh) { int32 NumBones = SkeletalMesh->RefSkeleton.

Continue reading

[Maya]Plugins Collections

A search engine for Maya for all its tools and your own scripts. http://cosmos.toolsfrom.space/ Workflow Toolkit: Shader, UV, Curve, Selection, Renamer. https://gumroad.com/eriklehmann

Continue reading

Futuristic modular top-down rooftop https://cubebrush.co/matima-studio/products/cdfga-vJET/futuristic-modular-top-down-rooftop Overgrown Ruins https://cubebrush.co/matima-studio/products/txm3yg-vfju/overgrown-ruins https://www.mawiunited.com/ https://www.matima-studio.com/assets

Continue reading

UE4 Plugin Link Error: Error LNK2019 unresolved external symbol "private: static class UClass * __cdecl UMyComponent::GetPrivateStaticClass(void)" (?GetPrivateStaticClass@UMyComponent@@CAPEAVUClass@@XZ) referenced in function "class UMyComponent * __cdecl NewObject<class UMyComponent>(class UObject *)" (??$NewObject@VUMyComponent@@@@YAPEAVUMyComponent@@PEAVUObject@@@Z) ClimbWall Reason: Maybe you removed UE4’s macro in your header. Solution: Add UE4 stylized macro in header, e.g.: UCLASS() class TESTPLUGIN_API UMyComponent : public UActorComponent { GENERATED_BODY() }

Continue reading

keywords:计算器代码、Calculator #include "stdio.h" #include "string.h" #define MAX 1001 double stack[MAX]; int tail; int main(){ int a; while(scanf("%d ",&a)&&a!=0){ tail=0; stack[++tail]=1.0*a;//tail始终指向末尾数字位置 //1.入栈所有数据(如果遇到*/号,只更新栈尾) char ch1,ch2; while(scanf("%c %d%c",&ch1,&a,&ch2)!=EOF){ if(ch1=='+'){ stack[++tail]=1.0*a;//push }else if(ch1=='-'){ stack[++tail]=-1.0*a;//push neg }else if(ch1=='*'){ stack[tail]=stack[tail]*a;//update tail }else if(ch1=='/'){ stack[tail]=stack[tail]/(double)a;//updata tail } if(ch2!=' ') break; } //2.把栈里头的东西全部加起来,求和 double result=0; for(int i=1;i<=tail;i++) result+=stack[i]; printf("%.2lf\n",result); } return 1; } 原文:https://blog.csdn.net/JIEJINQUANIL/article/details/51405381

Continue reading

Mathematics https://keisan.casio.com/menu/system/000000000250 Calcuate distance from foot of perpendicular to line https://math.stackexchange.com/questions/33868/foot-of-perpendicular-to-line How do you find the distance from a point to a plane? https://math.stackexchange.com/questions/88392/how-do-you-find-the-distance-from-a-point-to-a-plane How to find the equation of a plane using three non-collinear points https://www.maplesoft.com/support/help/maple/view.aspx?path=MathApps%2FEquationofaPlane3Points Find the equation of the plane knowing that it passes through 3 points https://math.stackexchange.com/questions/1156983/find-the-equation-of-the-plane-knowing-that-it-passes-through-3-points Find plane by normal and instance point + distance between origin and plane https://math.stackexchange.com/questions/752252/find-plane-by-normal-and-instance-point-distance-between-origin-and-plane

Continue reading

原文:https://blog.csdn.net/zhouschina/article/details/8784908 已知三点p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),要求确定的平面方程。 关键在于求出平面的一个法向量,为此做向量p1p2(x2-x1,y2-y1,z2-z1), p1p3(x3-x1,y3-y1,z3-z1),平面法线和这两个向量垂直,因此法向量n: 平面方程: a * (x - x1) + b * (y - y1) + c * (z - z1) = 0; d = -a * x1 - b * y1 - c * z1; 平面方程2: a * x + b * y + c * z + d=0; 代码: //已知3点坐标,求平面ax+by+cz+d=0; void get_panel(Point p1, Point p2, Point p3, double &a, double &b, double &c, double &d) { a = ( (p2.

Continue reading

算法1 原文:https://blog.csdn.net/zhouschina/article/details/14647587 假设空间某点O的坐标为(Xo,Yo,Zo),空间某条直线上两点A和B的坐标为:(X1,Y1,Z1),(X2,Y2,Z2),设点O在直线AB上的垂足为点N,坐标为(Xn,Yn,Zn)。点N坐标解算过程如下: 首先求出下列向量: 由向量垂直关系(公式1): 点N在直线AB上,根据向量共线(公式2): 由公式2得(公式3): 把公式3式代入公式1式,式中只有一个未知数k,整理化简解出k(公式4): 把公式4式代入公式3式即得到垂足N的坐标。 二维空间 // 二维空间点到直线的垂足 struct Point { double x,y; } Point GetFootOfPerpendicular( const Point &pt, // 直线外一点 const Point &begin, // 直线开始点 const Point &end) // 直线结束点 { Point retVal; double dx = begin.x - end.x; double dy = begin.y - end.y; if(abs(dx) < 0.00000001 && abs(dy) < 0.00000001 ) { retVal = begin; return retVal; } double u = (pt.

Continue reading

对于结构简单的模型,使用UE4自动生成的Simple Collision没什么问题;如果模型结构复杂,使用Simple Collision不够精准,使用Complex Collision对于实时计算(比如开放世界大场景的游戏项目)的项目来说太耗。 UE4中自定义碰撞盒 Static Mesh默认打开后: 勾选 Simple Collision 然后选中 Collision,按Delete键删掉 然后点击菜单 Collision -》 Add Box Simplified Collision 然后就可以按W、E、R键修改 Box的坐标、转向、缩放等 由于缩放比例是按倍数调整的,所以一个box很难完整包裹物体,这个时候可以使用多个Box组合,例如: 官方文档: Setting Up Collisions With Static Meshes https://docs.unrealengine.com/en-us/Engine/Content/Types/StaticMeshes/HowTo/SettingCollision 在3DMax、Maya中创建自定义碰撞盒 UE4编辑器中虽然提供了添加自定义碰撞盒的功能,但是编辑起来不够灵活,对于特殊行的物体,建议在建模软件中创建自定义碰撞盒。 1,比如U型物体,UE4自动生成的碰撞盒子是这样的: 简单碰撞 复杂碰撞 2,我们在建模软件中(这里以Maya为例),为U型物体添加三块遮挡方块 将U型物体和3个方块合成一个Group,并且碰撞盒子的命名一定要遵循规则:UCX_主物体名XXX。例如:主物体名称为pCylinder,则碰撞盒子的名称必须为:UCX_pCylinderXXX,否则导入UE4后这3个方块会被当作真实物体而不是碰撞体。 然后导出FBX文件,导入UE4时,去掉勾选:Auto Generate Collision;如果碰撞盒子没有和模型合成一个Group,还需要勾选:Combine Meshes。这里我们已经在Maya进行了Group操作,所以可以不用勾选 Combine Meshes。 导入UE4后,编辑器中打开该物体,然后勾选:Collision -》 Simple Collision 就可以看到3块自定义碰撞盒。

Continue reading

[UE4]Root Motion

蓝图设置方式 Root Motion 设置步骤: 先在 AnimSequence 的Asset Detail面板中勾选EnableRootMotion和Force Root Lock。 然后基于该 AnimSequence 新建一个 AnimMontage。 然后再在 AnimationBluerpint 中设置Root Motion Mode为 Root Motion From Montages Only(Class Defaults 面板下,不是Class Settings)。 如果你没有使用UE4的服务器、或者使用了UE4服务器但是没有对动画启用Replication(服务端通过 NetMulticast 播放动画),设置为Root Motion from Enerything没有问题,如果使用了UE4的Replication,且这些动画文件(AnimSequence, Blendspace, AnimMontage, etc.)勾选了EnableRootMotion,那么 Root Motion 也会被同步,影响性能。所以官方文档上的建议是使用默认设置,即:Root Motion Mode设置为Root Motion From Montages Only,只对Montage的Root Motion进行Replication。 Root Motion https://docs.unrealengine.com/en-US/Engine/Animation/RootMotion C++设置方式 UAnimMontage 的两个属性 bEnableRootMotionTranslation、bEnableRootMotionRotation,任意一个设置为 true 即可。 AnimMontage.cpp 引擎代码: bool bRootMotionEnabled = bEnableRootMotionTranslation || bEnableRootMotionRotation; if (bRootMotionEnabled) { for (FSlotAnimationTrack& Slot : SlotAnimTracks) { for (FAnimSegment& Segment : Slot.

Continue reading

enum 1, define UENUM() enum Status { Stopped UMETA(DisplayName = "Stopped"), Moving UMETA(DisplayName = "Moving"), Attacking UMETA(DisplayName = "Attacking"), }; 2, using UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Status) TEnumAsByte<Status> Status; struct 1, define USTRUCT(BlueprintType) struct TESTPROJ_API FMyStruct { GENERATED_USTRUCT_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Test") int32 Test; FMyStruct() { } }; 2, using UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) FMyStruct Test;

Continue reading

Author's picture

Neil Wang

久长唯有品格

To Be Marvelous

Yichang·Hubei