物體移動 u3d學習總結筆記本
阿新 • • 發佈:2018-11-17
目錄
1.Transform移動
2.Rigidbody移動
3通用
//==============================================
1.Transform移動===================================
Translate()
//軸移動
物體以relativeTo(Fighter.transform)為參照系,沿著translation運動|translation|的距離。如果relativeTo預設將
以Space.Self為預設值。//恆速移動
transform.Translate(Vector3.forward * ShootSpeed * Time.deltaTime, Fighter.transform);
返回目錄
2.Rigidbody移動====================================
velocity()
這種方法只能適用於剛體,因為velocity是剛體特有的屬性。//改速度移動
gameObject.GetComponent<Rigidbody>().velocity = Vector3.forward * MoveSpeed;
MovePosition()
//讓物體移動到新的位置position。//恆速移動
//適用於頻繁改變,推薦使用這種,較為平滑
rb.MovePosition(transform.position + transform.forward * Time.deltaTime);
AddForce()
playerRgd.AddForce(dir*force);//方向與力道
//給剛體增加一個力。//炮彈加速
playerRgd.AddRelativeForce(dir*force);
//新增一個力到剛體。相對於本地座標。
返回目錄
3通用====================================
Vector3.MoveTowards()
//向著目標點target,恆速移動
transform.position = Vector3.MoveTowards(transform.position, target, MoveSpeed * Time.deltaTime); //Rigidbody.position
Vector3.Lerp()
//控制物體向Target移動,插值移動
gameObject.transform.localPosition = Vector3.Lerp(transform.position, Target, MoveSpeed * Time.deltaTime);
// position是世界座標中的位置,可以理解為絕對座標
// localPosition是相對於父物件的位置,是相對座標,我們在transform欄看到的是相對座標
// 如果物件是一級物件,position和localPosition是相同的
Vector3.SmoothDamp()
//此方法一般用於攝像機的平滑移動。
transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime);
//Rigidbody.position
返回目錄