我已經完成了編程,小球也加了剛體,變為預制物體,程式如下。現在就是小球不能有效的運動起來,問一下大家應該怎么設定或者程式問題在哪里。多謝。
#pragma strict
var newobject : Transform;
var tempPosition:Vector3;
var vx:float;
var vy:float;
var a:float;
var b:float;
function Start () {
tempPosition.x=5;
tempPosition.y=10;
tempPosition.z=0;
vy=0;
vx=-5;
a=0;
b=-10;
}
function Update () {
if(Input.GetButtonDown("Fire1")){
var n: Transform=Instantiate(newobject,Vector3(5,10,0),transform.rotation);}
reflashPosition();
transform.position.x=tempPosition.x;
transform.position.y=tempPosition.y;
}
function reflashPosition(){
tempPosition.x=vx*Time.deltaTime+0.5*a*Mathf.Pow(Time.deltaTime,2);
vx=vx+a*Time.deltaTime;
tempPosition.y=vy*Time.deltaTime+0.5*b*Mathf.Pow(Time.deltaTime,2);
vy=vy+b*Time.deltaTime;
}
uj5u.com熱心網友回復:
首先我覺得你可以使用一個迭代公式,將reflashfunction改寫為function reflashPosition(){
tempPosition.x+=vx*Time.deltaTime;
vx=vx+a*Time.deltaTime;
tempPosition.y+=vy*Time.deltaTime;
vy=vy+b*Time.deltaTime;
}
或者就直接使用你的總結公式s=v0*t+1/2a*t*t,但是記住這里的t是累積的時間。
最后就是既然你已經自己寫了速度更新的策略,那么rigidbody在這里就沒有什么意義了,除非你還要用自帶的碰撞檢測。可以如果使用了rigidbody,那你呼叫physics的方法然他幫你算就好了
uj5u.com熱心網友回復:
樓主transform.position.x=tempPosition.x;
transform.position.y=tempPosition.y;
這是對那個物體設定的, var n: Transform=Instantiate(newobject,Vector3(5,10,0),transform.rotation); 你實體化這個物體不設定他位置,它如何移動呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/61359.html
標籤:Unity3D
