【问题标题】:Unity - Continuously change the forward direction of game object?Unity - 不断改变游戏对象的前进方向?
【发布时间】:2014-02-20 10:17:13
【问题描述】:

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

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

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

线条渲染器代码。

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;

    }

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

【问题讨论】:

    标签: c# unity3d rotation


    【解决方案1】:

    您的问题似乎有点令人困惑,但您似乎想让球绕着一条线旋转。球可以自行旋转,线只相对于球保持不动。

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

    对不起,如果我不善于解释。如果你不知道什么时候你在层次结构中作为父对象,它们会一起移动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-26
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多