2015-04-16 7 views
2

im делает простую 2D-игру.Горизонтальная гравитация на gameObject в Unity

У меня есть gameobject с компонентом rigidbody.

Стандартная жесткость твердого тела сбрасывает мой объект игры, но я хочу, чтобы гравитация вытягивала объект игры слева.

Я знаю, как установить гравитацию, чтобы тянуть влево изменить -> настройка проекта -> ... но эта настройка изменит гравитацию на все жесткие тела, что является проблемой в моем случае.

Я просто хочу установить гравитацию для 1 игрового объекта.

ответ

5

Поскольку вы делаете 2D-игру, я предполагаю, что ваш GameObject имеет подключенный компонент Rigidbody2D. Установите шкалу силы тяжести на это значение 0. Также присоедините ConstantForce2D к вашему GameObject и примените гравитацию в Force -> X. Чтобы получить ту же силу, что и сила тяжести, вы должны умножить свою гравитацию (вероятно, 9.81) на массу вашего GameObject. Если ваша пользовательская гравитация или масса GameObject время от времени меняются, убедитесь, что вы вычислили это в своем методе обновления, а затем примените его к компоненту ConstantForce2D. Это может выглядеть примерно так:

Rigidbody2D playerRigidbody; 
ConstantForce2D customGravity; 

void Awake() { 
    playerRigidbody = GetComponent<Rigidbody2D>(); 
    customGravity = GetComponent<ConstantForce2D>(); 

    float gravityForceAmount = playerRigidbody.mass * Physics2D.gravity.magnitude; 
    customGravity.force = new Vector2 (-gravityForceAmount, 0); // gravity to the left 
} 

void Update() { 
    if(mass or gravity changes) 
     modify the constant force; 
} 
+0

Большое спасибо @ grexter89 !!! –

Смежные вопросы