【问题标题】:How to attach a game object to the player when it collided by player?玩家碰撞时如何将游戏对象附加到玩家身上?
【发布时间】:2018-10-09 16:28:39
【问题描述】:

我正在制作一个游戏,其中我的玩家是 UFO,当玩家与其他游戏对象发生碰撞时,我需要将游戏对象附加或漂浮在玩家下方的空中 (UFO),就像原始 UFO 一样。我小时候曾尝试将它们连接起来,但没有成功。

我做了一个脚本如下:

if (coll) {
    distance = Vector2.Distance (this.transform.position, player.transform.position);

    if (distance < 2) {
        this.transform.parent = encaixe.transform;
        this.transform.localPosition = new Vector2 (0f, 1.2f);
        this.transform.localRotation = Quaternion.identity;
        encaixe.rigidbody2D.gravityScale=0;
    }
}

在使用这个脚本时,游戏对象正在附加,但玩家并没有像原来那样移动。游戏对象正在用力往下拉或往上拉。

请给我建议如何做到这一点。

【问题讨论】:

  • 子对象是否运动? (FWIW,你可能想看看gamedev.stackexchange.com。)
  • 是的。子对象是一个运动对象。父母和孩子都有二维刚体。
  • 究竟什么是“encaixe”?
  • 抱歉,这是我的对象名称。一个简单的瓶子。

标签: android unity3d


【解决方案1】:

我知道这个帖子很老了,但也许有人会遇到这个问题并且需要答案。

您可以主动将对象的位置和旋转设置为 UFO 的碰撞。 类似于以下内容(伪代码):

private bool hasCollided = false;
void OnCollisionEnter()
{
  hasCollided = true;
}
void LateUpdate()
{
  if (hasCollided)
  {
    followPlayer();
  }
}
void followPlayer()
{
  //update position and rotation
}

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多