【问题标题】:Rotating sprite to face vector in unity将精灵旋转到统一的面矢量
【发布时间】:2019-07-19 14:51:52
【问题描述】:

我有一个僵尸游戏对象和一个塔游戏对象。 我尝试了很多方法来让敌人面对塔内嵌套对象的位置,但没有任何效果。

我已经尝试过使用 Mathf.Acos 没有效果。 我得到的最接近的是使用此代码; 但它仍然稍微模糊了预期的方向,我还没有找到模式。

Vector2 direction = centralTower.transform.position + centralTower.transform.parent.transform.position - gameObject.transform.position;

transform.up = direction;
gameObject.transform.position += transform.up;

我知道第一行看起来像一口但基本上可以简化成这样

方向 = (TowerPosition + TowerChild(attakcingPoint)Position) - 敌人位置

顺便说一句:中心塔变量指的是攻击点

我真的不知道发生了什么,而且我已经研究了好几天的角度,但没有任何效果。

【问题讨论】:

  • 你试过LookAt方法了吗? gameObject.LookAt(centralTower, Vector3.up); 之类的东西?
  • 是否可以在 2d 环境中使用 lookat 方法,因为当我使用它时,我的变换值只是在整个地方翻转
  • 我想,但我还没有尝试。为第二个参数尝试不同的值
  • @Procode238 为什么要将两个绝对位置加在一起?当您说TowerPosition + TowerChild(attakcingPoint)Position 时,您能否提供有关您要计算的内容的更多信息?你确定你的意思不是direction = centralTower.transform.position - transform.position 让敌人指向centralTower 的变换吗?
  • 抱歉给您带来了困惑。我有一个嵌套在塔位置内的对象,称为attackingPoint。我会使用attackingPoint Position,除了它的位置是相对于它的父级的。所以我添加了塔的位置和攻击点的位置来得到攻击点相对于层次结构的位置

标签: c# unity3d


【解决方案1】:

similar question 提供了答案transform.right = target.position - transform.position;

【讨论】:

  • 不要粗鲁感谢您的回复,但从技术上讲,这不是我在这里做的吗?唯一的问题是嵌套对象的位置是相对于它们的父对象的,因此要找到相对于游戏世界的位置,您需要将这些位置相加。其余的都一样。
  • 从 Asker 的代码来看,sprite 的正面看起来是在它的up 方向,所以应该是transform.up = ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 2018-01-09
相关资源
最近更新 更多