天天看點

關于站在移動物上的問題

遊戲中經常遇到在移動物上戰鬥的情況,而直接拖拽的話就會下落了

預設情況:

關于站在移動物上的問題
比較簡單的辦法是直接設定父物體
關于站在移動物上的問題
關于站在移動物上的問題

但刨根問底想一下,在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遊戲的飛機或者火車頂上的移動比較麻煩,載具的驅動方式很複雜,還是改父物體比較好