团结 - 不断改变游戏对象的前进方向?

时间:2014-02-20 10:17:13

标签: c# unity3d rotation

我正在创建一个项目,其中我有一个球体GameObject,它具有空的游戏对象作为孩子。行渲染器组件附加到此空游戏对象。

我已经使球体看到触摸方向,以便子对象的线条渲染器也面向触摸位置。当球体在一个轴上旋转时,它可以正常工作。

但是当我向球体施加力并且它开始在所有轴上旋转时就会发生问题,就像普通球一样。但是附着在它上面的线条渲染器粘在它的脸上,当球体朝下时,线条渲染器会进入地面。

Line Renderer的代码。

using UnityEngine;
using System.Collections;

public class LineRenderer : MonoBehaviour {

private LineRenderer lineRenderer;

private Vector3 finalTouchPosition;

// Use this for initialization
void Start () {

    lineRenderer = gameObject.GetComponent<LineRenderer> ();
}



// Update is called once per frame
void Update () {

    Ray ray = new Ray (transform.position, transform.forward);

    RaycastHit hit;

    lineRenderer.SetPosition (0, ray.origin);


    if (Physics.Raycast (ray, out hit)) {
        lineRenderer.SetPosition (1, hit.point);    
    }


}

}

用触摸旋转物体的代码。

if(theTouch.phase == TouchPhase.Moved)
    {

    Vector3 tempTouch = new Vector3(theTouch.position.x ,theTouch.position.y, myCamera.position.y - targetObject.transform.position.y);

    fingerPosition = Camera.main.ScreenToWorldPoint(tempTouch);

    targetObject.transform.LookAt(fingerPosition);

    isRotating = true;

    }

我希望线条渲染器始终与地面平行,但是源自球体的球体或面。我尝试了很多东西。但还是没有找到解决方案。

1 个答案:

答案 0 :(得分:0)

你的问题似乎有点令人困惑,但似乎你想要一个球围绕一条线旋转。球按照自己的意愿旋转,直线相对于球保持不旋转。

如果这是正确的。我建议有两个对象。球,然后是一个空/ invis对象。球旋转并移动,只需通过移动,不旋转就可以取出空物体。将线渲染器放在空对象上,在层次结构中,invis对象是球的父对象。用球物理和bamn滚球移动空物体,响应触摸。

对不起,如果我不好解释。如果你不知道什么时候你在层次结构中的某些东西他们一起移动。