遊戲中經常遇到在移動物上戰鬥的情況,而直接拖拽的話就會下落了
預設情況:
比較簡單的辦法是直接設定父物體但刨根問底想一下,在Unity裡拖拽,使用transform移動,其實都不是基于實體的移動
隻有改變速率才是,後來用恒力去測了一下,果然可以帶動站在上面的物體
是以,我嘗試了一下更簡單的方式: 腳本:using UnityEngine;
using System.Collections;
public class PhysicsTest : MonoBehaviour
{
const int MAX_MASS = 10000;
void Awake()
{
GetComponent<Rigidbody>().mass = MAX_MASS;
GetComponent<Collider>().material = new PhysicMaterial();
GetComponent<Collider>().material.staticFriction = 99999;
GetComponent<Collider>().material.dynamicFriction = 99999;
}
IEnumerator Start()
{
while (true)
{
for (int i = 0; i < 100; i++)
{
GetComponent<Rigidbody>().velocity = Vector3.right * Time.deltaTime * 1000f;
yield return new WaitForFixedUpdate();
}
yield return new WaitForSeconds(1);
for (int i = 0; i < 100; i++)
{
GetComponent<Rigidbody>().velocity = -Vector3.right * Time.deltaTime * 1000f;
yield return new WaitForFixedUpdate();
}
yield return new WaitForSeconds(1);
}
}
}
View Code
這樣用在橫版遊戲中很便捷,可以避開不少bug
但是對于3D遊戲的飛機或者火車頂上的移動比較麻煩,載具的驅動方式很複雜,還是改父物體比較好