首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iTween与物理加速相结合

iTween与物理加速相结合
EN

Stack Overflow用户
提问于 2014-02-05 03:38:03
回答 1查看 3K关注 0票数 2

我试图把iTween和物理加速结合起来。

这里是路径的顶部视图。棕色矩形是由一个立方体GameObject制作的,并附加了一个iTweenPath组件(4个节点)。路径名为Path1。在左边,有一个球体(可能看不清楚),它作为演员,附加了RigidBody (质量= 3),几乎没有放在地板上的单位。

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

代码语言:javascript
复制
void OnCollisionEnter(Collision collison) {
  iTween.MoveTo(gameObject, iTween.Hash("path", iTweenPath.GetPath("Path1"), "time", 5));
}

当球由于重力而落地时,它会触发iTween.MoveTo()。上述工作如预期的那样。

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

代码语言:javascript
复制
void FixedUpdate() {
  rigidbody.AddForce(transform.forward * 5.0f, ForceMode.Acceleration);
}

然而,iTween统治运动,使AddForce()FixedUpdate()中毫无作用。我怎么才能把这两者结合起来?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-06 07:23:03

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21568178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档