【发布时间】:2020-03-14 10:39:37
【问题描述】:
不幸的是,我的数学知识非常令人沮丧,但我真的很想了解我必须通过用鼠标拖动来控制 Actor 的代码。此代码还可以用作通过在屏幕上单击鼠标将对象放置在世界中的方式。
首先 - 代码运行良好,这是更多关于向量代数而不是虚幻引擎的问题。我很迷茫,我什至不知道如何正确命名变量 lol
所以,这是我从我发现的一个蓝图示例转换而来的代码,它实现了我需要的功能:
FVector WorldLocation;
FVector WorldDirection;
PlayerController->DeprojectMousePositionToWorld(WorldLocation, WorldDirection);
// Have no idea how it works but it works! I really need to learn more about vector Algebra :(((
float DistanceAboveGround = 200.0f;
float NotSureWhyThisValue = -1.0f;
float WhyThisOperation = WorldLocation.Z / WorldDirection.Z + DistanceAboveGround;
FVector IsThisNewWorldDirection = WorldDirection * WhyThisOperation * NotSureWhyThisValue;
FVector ActorWorldLocation = WorldLocation + IsThisNewWorldDirection;
// end of "Have no idea how it works" code
Capsule->SetWorldLocation(ActorWorldLocation);
如果有人能解释一下为什么我需要做这些以 // 不知道.. 注释行开头的操作?如果我能理解如何正确命名“NotSureWhyThisValue”、“WhatDoesItMean”、“WhyThisOperation”和“IsThisNewWorldDirection”?这对我来说将是一个巨大的进步,完美的情况是解释每一行......
提前致谢!
【问题讨论】:
-
这只是为了计算演员的身高值吗?
-
代码有效,我在 Tick 中使用它,并且可以随着鼠标位置的变化拖动我的演员。有一件事可能有助于理解虚幻场景——它是一种 RTS 类型的游戏,所以想象一下星际争霸 3,我通过鼠标点击在地图上生成了一个演员。
标签: c++ linear-algebra unreal-engine4 game-development vectormath