![](/img/trans.png)
[英]Use gravity to define downwards acceleration and velocity, overriding physics controls?
[英]Combine iTween with physics acceleration
我正在嘗試將iTween與物理加速結合起來。
這是路徑的俯視圖。 將棕色矩形由一個立方體做出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()
完全無效。 如何將兩者結合起來?
我沒有在此解決方案中使用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是生成彎曲路徑的空游戲對象的數組(順序很重要)。 嘗試將此代碼附加到球體上。 讓我知道, 在這里 ,如果有任何懷疑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.