2

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

路径的顶视图

这是路径的俯视图。棕色矩形由一个立方体组成GameObject,附加了一个iTweenPath组件(4 个节点)。该路径名为Path1. 在左侧,有一个球体(可能看不清楚),它作为 Actor,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()无效。我怎样才能将这两者结合起来?

4

1 回答 1

1

我没有在这个解决方案中使用 iTween。只需使用数组中的空游戏对象数量来生成路径。路径中的游戏对象越多,路径越平滑。

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 是生成弯曲路径的空游戏对象数组(序列很重要)。尝试将此代码附加到球体。如果有任何疑问,请在这里告诉我。

于 2014-02-06T07:23:03.230 回答