【问题标题】:Unity 3D Door Script Angle TransformationUnity 3D 门脚本角度变换
【发布时间】:2016-01-13 05:12:45
【问题描述】:

我为打开和关闭门编写了以下代码:

using UnityEngine;
using System.Collections;

public class LittleDoorScript : MonoBehaviour
{

    private bool doorOpen = false;
    private Ray ray;
    private RaycastHit hit;
    private float distance = 5.0f;
    public GameObject door;

    private void Update()
    {
        if (Input.GetKeyDown("e"))
        {
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit, distance))
            {
                if(hit.collider.gameObject.name == door.name)
                {
                    if (!doorOpen)
                    {
                        Quaternion targetRotation = Quaternion.Euler(0.0f, 90.0f, 0.0f);
                        hit.transform.localRotation = Quaternion.Slerp(transform.localRotation, targetRotation, 2.0f);
                        doorOpen = true;
                    }
                    else
                    {
                        Quaternion targetRotation2 = Quaternion.Euler(0.0f, 0.0f, 0.0f);
                        hit.transform.localRotation = Quaternion.Slerp(transform.localRotation, targetRotation2, 2.0f);
                        doorOpen = false;
                    }
                }
            }
        }
    }
}

问题是门没有以正确的角度打开,如果我关上门,就不会回到起始位置。 也许有人有想法?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    尝试将角度更改为-90,我总是遇到这种情况。

    Quaternion targetRotation = Quaternion.Euler(0.0f, -90.0f, 0.0f);
    

    第二个:

    Quaternion targetRotation2 = Quaternion.Euler(0.0f, 90.0f, 0.0f);
    

    【讨论】:

    • 它没有正确的效果。我的门有以下起始数据:位置 X -0.038414 Y -1.699535 Z 12.69733 旋转 X 270 Y 180 Z 0 比例 X 110.0246 Y 17.51499 Z 6.972782
    • 现在门变换到另一个位置并返回另一个位置,但不是原点位置
    • 您可以尝试在 Start 方法中创建一个变量来获取门的原始位置,因此 targetRotation2 将等于该变量。要知道第一次旋转的值,请在编辑器中手动制作,并在检查器中查看看起来不错的旋转值,然后将其放在代码中...希望它有效 -
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    相关资源
    最近更新 更多