[英]Unity - Continuously change the forward direction of game object?
我正在创建一个项目,其中有一个球体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;
}
我希望线渲染器始终与地面平行,但源于球体或球体的面。 我已经尝试了很多东西。 但是仍然没有找到解决方案。
您的问题似乎有点令人困惑,但似乎您希望球绕直线旋转。 球按照自己的意愿旋转,并且直线仅相对于球保持不旋转。
如果正确的话。 我建议有两个对象。 球,然后是一个空/隐形物体。 球旋转并移动,只是通过移动来带走空物体,不旋转。 将线条渲染器放在空对象上,然后在层次结构中将invis对象作为球的父对象。 用球物理原理和空球移动空物体,以响应触摸。
对不起,如果我不好讲。 而且,如果您不知道何时将层次结构中的某项作为父项,它们会一起移动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.