2015-12-21 4 views
1

У меня есть эта игра сверху вниз, в которой я хочу создать эффект отбрасывания, когда мой игрок сталкивается с моим объектом. Я хочу создать скрипт отбрасывания, используя OnTriggerEnter2D. Я хочу, чтобы скрипт с детонацией выглядел как this. Как бы я это сделал? (Извините, я немного нуб)Unity: Как создать сценарий направлений для Knockback vector2 (C#)

(http://noobtuts.com/content/unity/2d-pong-game/vector2_directions.png)

+0

Можете ли вы использовать OnCollisionEnter2D? –

+0

Да, я так думаю –

ответ

2

Hei вот как я получил его на работу.

Сначала здесь базовый шаг сценария:

public class Move : MonoBehaviour { 
    public Rigidbody2D rig; 
    public float speed = 0.2f; 
    public float maxSpeed = 5f; 
    void FixedUpdate() 
    { 
     Vector2 vel = new Vector2 (Input.GetAxis("Horizontal") /5f, Input.GetAxis("Vertical")/5f); 
     vel.Normalize(); 
     if (vel.sqrMagnitude > 0f && rig.velocity.sqrMagnitude < maxSpeed) { 
      rig.AddForce (vel * speed, ForceMode2D.Impulse); 
     } else { 
      rig.velocity = Vector2.zero; 
     } 
    } 
} 

А потом сценарий подпрыгивание:

public class CollideCtrl : MonoBehaviour 
{ 
    public float speed = 500f; 
    void OnCollisionEnter2D (Collision2D col) { 
     if(col.gameObject.CompareTag("Player")){ 
      Debug.Log("Col"); 
      Rigidbody2D rig = col.gameObject.GetComponent<Rigidbody2D>(); 
      if(rig == null) { return;} 
      Vector2 velocity = rig.velocity; 
      rig.AddForce(-velocity * speed); 
     } 
    } 
} 

Теперь нужно настроить эти значения. Эффект работает, но не идеально по моему вкусу. Я приглашаю кого-нибудь улучшить этот ответ с их предложением или собственным ответом, потому что это быстрый способ, но не идеальный. Это может дать вам некоторое преимущество.

Игроку нужен тег игрока, Rigidbody2D без гравитации и двумерный столкновение. Коробка для столкновения требует, чтобы BoxCollider2D и isTrigger были ложными. Если вам это нужно как триггер, измените имя и параметр метода столкновения.

+0

Спасибо, что ответили, но для чего нужен сценарий перемещения, и к чему его следует привязать –

+0

. Он идет на плеер. Он контролирует основное движение. Я бы предложил создать простой уровень для прототипа, пока вы не добьетесь его, а затем перейдите на главную сцену. – Everts

+0

Спасибо, я только что попробовал, но нет силы отталкивать моего игрока назад. это похоже на то, что когда у объекта есть box collider2d, а rigidbody2d сталкивается с другим объектом, у которого есть коллайдер-коллайдер, а не тряска жесткого тела. –

0

Вы можете попробовать использовать физические материалы для этого, документация здесь:

http://docs.unity3d.com/Manual/class-PhysicMaterial.html

Похоже, именно то, что вы ищете!

+0

Спасибо, но я делаю 2D не 3D, поэтому я могу использовать физику. –

+0

Вы также можете использовать физические материалы в 2D –

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

  • Нет связанных вопросов^_^