将iTween与物理加速相结合

时间:2014-02-05 03:38:03

标签: unity3d itween

我正在尝试将iTween与物理加速相结合。

top view of the path

这是路径的顶视图。棕色矩形由多维数据集GameObject生成,附加iTweenPath个组件(4个节点)。该路径名为Path1。在左边,有一个球体(可能看不清楚),作为演员,附加RigidBody(质量= 3),在地板上方放置几个单位。

然后,我为Actor分配了一个脚本,即:

void OnCollisionEnter(Collision collison) {
  iTween.MoveTo(gameObject, iTween.Hash("path", iTweenPath.GetPath("Path1"), "time", 5));
}

当球因重力撞击地面时,它会触发iTween.MoveTo()。以上工作如预期。

但是,我想结合我的物理加速脚本,即:

void FixedUpdate() {
  rigidbody.AddForce(transform.forward * 5.0f, ForceMode.Acceleration);
}

然而,iTween管理运动,使AddForce()中的FixedUpdate()完全无效。我怎样才能将这两者结合起来?

1 个答案:

答案 0 :(得分:1)

我没有在此解决方案中使用iTween。刚刚在数组中使用了多个空的gameobject来生成路径。路径中的更多游戏对象使路径更加顺畅。

using UnityEngine;
using System.Collections;

public class RollBall : MonoBehaviour 
{
    public float speed=10;
    public Transform target;
    public Transform[] pathPoints;
    public int c;


void Start () 
    {
        c=0;
    }

    void Update () 
    {
        target.position=new Vector3(transform.position.x,transform.position.y+1f,transform.transform.position.z);
        if(target.position.z>=pathPoints[c].position.z)
        {
            if(c<pathPoints.Length)
                c++;
        }
        target.LookAt(pathPoints[c]);

        if(Input.GetKey(KeyCode.UpArrow))
        {
            rigidbody.AddForce(target.forward*speed);
        }
    }

}

在这个目标中是空的游戏对象,它与球体一起移动以给出球体的方向。 pathPoints是生成弯曲路径的空游戏对象的数组(序列很重要)。尝试将此代码附加到球体上。如果有任何疑问,请告诉我here