Questions tagged «vector»

一种数学概念,可以用来表达位置,方向或速度,并且可以简化或完全平凡化空间问题。

2
如何使用点积获得两个向量之间的夹角?
我正在学习在游戏中使用归一化向量。 我了解到,为了知道两个向量之间的角度,我可以使用点积。这给我一个介于-1和1之间的值,其中 1表示矢量平行并且面向相同方向(角度为180度)。 -1表示它们平行且面对相反的方向(仍为180度)。 0 表示它们之间的角度为90度。 我想知道如何将两个向量的点积转换为以度为单位的实际角度。例如,如果两个向量的点积为0.28,则0和360度之间的对应角度是多少?

2
如何在两个向量之间线性插值?
我有一个速度矢量,我的客户在哪里,往哪里去,我有一个来自服务器的矢量,告诉客户应该在哪里。有时情况有所不同,因此我想在当前位置和服务器正确位置之间进行插值。 黑色箭头是客户端速度向量,红色箭头是服务器上的客户端速度向量,蓝色箭头是我要计算和插入的速度向量。 如何计算蓝色向量?那么,如何在它们之间进行线性插值?

1
我如何知道我的敌人是否可以看到我的玩家?
给定一个玩家和一个敌人的位置,并给定每个角色的方向向量,我如何确定一个人是否可以“看见”另一个人? 换句话说,如何测试某个方向的位置在另一个方向的前面还是后面? 出于我的目的,“在...前面”是指直接在任何一个角度之前或与之成90度。
15 mathematics  ai  vector 

2
太空船动态推进器平衡
在我的游戏中,太空飞船是一种由玩家打造的装置,可以在任意位置,任意旋转地安装任意数量的推进器。我目前有一些肮脏的代码可以将船旋转到给定的角度(加速和减速)。 这是一个对称船面对红线指向的示例,被告知向左旋转。 但是,正如您想象的那样,取决于玩家将推进器放在何处,有时会出现不希望的线性力影响飞船的情况。在这种情况下,船开始前进。 我正在详细说明是否有可能找到推力器可以施加的最大推力而不引起线速度。(在上述情况下,这将是没有的,因为没有什么可以抵消来自后推力的力,而前推力会互相残杀)。 到目前为止,我想出了一个公式来确定“转弯效率”,例如,相对于线性运动,会引起多少旋转。 a-推进器b的位置矢量b-推进器b的位置矢量v1-推进器a的力v2-推进器b的力 efficiencyDelta = a.cross(v1)/ | v1 | -(a.cross(v1)+ b.cross(v2))/ | v1 + v2 | ,基本上是“ a.cross(v1 * t)/ | v1 |” 应该是转弯效率。然后,我们将其与推进器的转向效率相减,以查看是否值得使用新的推进器。 当我意识到推进器不是应该打开/关闭,而是可以将其推力从0更改为1时出现的。当玩家希望飞船前进时该怎么办。当然,需要平衡旋转/移动的量。 我不是火箭科学家,所以我希望有人可以告诉我,是否甚至可以这样计算每个推进器的油门,并向我推正确的方向。 感谢您抽出宝贵的时间!/金

2
从子弹而不是照相机中射出子弹,但保持相对于标线的准确性
我正在开发第一人称游戏,但遇到了问题。在我的游戏中,正在渲染玩家的枪支,并在屏幕中央放置一个标线片,如下所示: 首先,让我们想象一下没有渲染枪模型。然后发射子弹很容易-您只需将子弹精确地产生在玩家“眼睛”所在的位置,然后使用trig来根据玩家所看的方向计算速度。 但是现在,当我们添加枪支模型时……我们不能只是在子弹眼所在的地方产生子弹,我们就必须在枪的尖端产生子弹(对吗?)。因此,您可以这样做,但是然后...如何将子弹移动到标线指向的位置? 请记住,我的游戏中的子弹(在这种情况下实际上是火箭)将移动得足够慢,以至于看不到它的运动,因此,如果子弹太快而无法观察到的话,一些通常无法解决的解决方法将不起作用。例如,如果您没有生成它,使其看起来好像是从枪尖中出来的,那么玩家肯定会注意到这一点。


2
尽管使用了Time.deltaTime,但移动似乎与帧速率有关。
我有以下代码来计算在Unity中移动游戏对象所需的转换LateUpdate。据我了解,我对的使用Time.deltaTime应使最终的翻译帧速率独立(请注意CollisionDetection.Move(),仅用于进行射线广播)。 public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If we're ignoring gravity, then just …



1
将虚构的4D网格向下投影到屏幕
作为一种心理锻炼,我试图想象将任意的4D网格投影到屏幕(2D)上。 我猜单个4D三角形仍然只包含3个点,但是这3个点中的每一个都将由具有4个维度的列定义。 定义一个投影矩阵先将4D空间映射到3D空间,然后让OpenGL将自己的数据从该数据投影到2D空间是否更有意义? 还是最好只计划直接从4投影到2? 非常感谢。

2
如何计算拦截向量?
给定一个二维空间,一艘友好的太空飞船停滞不前,一个敌人没有以已知的实际位置,速度和方向直接移动到友好的飞船上。 友好的战舰想进入射击场与敌人作战。 实际上,我只是将矢量设置为实际位置的移动船舶,并在每一帧进行重新计算,从而产生某种“圆形”飞行路径。 我想要的是设定一条直直的路径,以达到到达发射距离时敌人(大概)将要到达的位置(假设直到那时敌人不会改变方向)。 作为第一个“简单”的实现,如果我们假设朋友可以立即从0加速到max,就足够了。 首选实现方式将考虑朋友的加速能力,并知道何时由于速度而无法进行拦截。它应该以各种启动速度工作,而不仅是静止不动。如果它甚至考虑制动,则将是一个加分(在给定的宇宙中,以光速进行战斗对能量效率极低)

4
法线贴图如何真正起作用?
我试图理解法线贴图的概念,但是我对一些事情感到困惑。简而言之,我不确定法线贴图是否依赖于视点(即,围绕同一对象旋转时是否会得到同一对象的不同法线贴图)。其次,我不明白为什么蓝色是法线贴图中的主要颜色。 我如何看待法线及其与RGB颜色的关系,如下所示。单位球体表示任何可能的单位法线-换句话说,单位法向向量的X,Y和Z分量的范围是-1至1。RGB颜色的分量的范围都是0至255。因此,这很有意义将-1(标准分量)映射到0(颜色分量),0到127或128以及1到255。介于两者之间的任何值都只是线性插值。 将此映射应用于任意3D对象的法线会产生非常彩色的图像,而根本不是蓝色。例如,当取一个立方体时,所有六个面将具有不同但均匀的颜色。例如,法线为(1,0,0)的脸将为(255,128,128),法线为(0,0,-1)的脸将为(128,128,0),依此类推。 但是,由于某种原因,我找到的多维数据集的法线贴图完全是蓝色的,即(128,128,255)。但很明显,法线并非全部在正z方向上,即(0,0,1)。这是如何运作的? [编辑] 好的,因此上述方法似乎被称为对象空间法线贴图或世界空间法线贴图。另一个称为切线法线贴图。我了解如何使用这种切线空间法线贴图来修改几何体的法线,但是我仍然不确定完全如何计算它(请参阅我在Nicol Bolas的回答中的评论)。 [编辑2] 我可能应该提到我正在处理分段参数化曲面。这些表面由一组表面补丁组成,其中每个补丁都与其自己的参数空间(u,v)= [0,1] x [0,1]相关联。可以在表面的任何一点上精确计算法线。显然,跨越切线空间所需的向量T(切线)和B(双切线)不仅仅是在u和v方向上​​表面补丁的偏导数。


5
为什么在Vector3s中不能使用运算符'> ='?
我正在尝试获得一个矩形,以便在我称为_positionA和的两个位置之间移动_positionB。两者都是类型Vector3。矩形移动得很好。但是,到达时_positionB它不会像应该的那样朝相反的方向移动。 我回到代码中看一看。我得出的结论是,随着对象的移动,if代码中的语句错过了rects位置等于的框架_positionB。如果rects的位置大于或等于, 我决定将代码修改为反向_positionB。我的代码不太长,因此我将在下面显示它: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.