为什么游戏对象的蓝色轴朝前,而枪支在红色轴上而不是蓝色?

时间:2020-05-31 21:03:19

标签: c# unity3d

我尝试创建一个空的游戏对象,并将第一个游戏对象作为子对象,但这并不能解决问题。 只需旋转对象,脚本就可以了,但是如果我使用LookAt,则旋转得不好,因为枪支指向红色轴,蓝色轴位于身体上。

Wrong axis

我尝试了简单的LookAt:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LookAT : MonoBehaviour 
{
    private GameObject target;

    // Use this for initialization
    void Start()
    {
       target = GameObject.FindGameObjectWithTag("Enemy");
    }
    // Update is called once per frame
    void Update()
    {
        transform.LookAt(target.transform);
    }
}

然后我尝试了一下:这看起来好一点了,好像它正与红色轴一起向前方开着枪,但是还不完美,但它没有达到理想的目标,我想我不确定,也不确定这是否是目标。好的解决方案:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LookAT : MonoBehaviour
{
    public float speed;

    private GameObject target;

    // Use this for initialization
    void Start()
    {
        target = GameObject.FindGameObjectWithTag("Enemy");
    }
    // Update is called once per frame
    void Update()
    {
        Vector3 direction = target.transform.position - transform.position;
        Quaternion toRotation = Quaternion.FromToRotation(transform.right, direction);
        transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, speed * Time.time);
    }
}

我尝试过的第二个解决方案似乎是红色的枪支轴现在正对准目标,但是枪支和底座上的环正在卡死,环也旋转了,但我认为它们不应该旋转,或者它们不应该成为一部分在目标上的外观。

在此屏幕快照中,基座上的整个环看起来就像是在瞄准目标,并使整个炮塔看起来很奇怪。因此,我不确定在只有炮塔转弯对象会面对目标的情况下,如何使这些环和其他东西旋转。

Wrong stuff is rotating and looking facing the target

1 个答案:

答案 0 :(得分:0)

看起来模型的轴与您要使用的轴不一致。它建议您修复模型,但也可以在顶部添加父变换,以便可以对模型进行一些旋转。

Check this out以获得更详细的说明。

要获得两个离散的旋转轴,我想您在帖子结尾处进行了描述,您可以按照我链接的帖子中的说明添加两个父对象,并将旋转分别应用于每个父对象。