2016-03-16 4 views
1

Я программирую нисходящую и рутинную игру для класса. Мы хотим механика, где, если вас поразит враг, или враг ударит вас, вы получите «отброшен». К сожалению, независимо от того, что я пробовал, я не могу заставить врага или игрока реагировать на силу.AddForce Method Not Working

Вот список вещей, которые я проверил, что было предложено в других вопросах, как это:

  • Игрок/Враг НЕ Кинематическая
  • Пробовал как с гравитацией и выключать
  • Нет позиций/вращения заморожены
  • Игрок/Враг имеют прикрепленные жёсткие ботинки
  • Игрок/Враг имеют прикрепленные коллайдеры, один с одним и один без функции isTrigger.
  • Пробовал как OnCollisionEnter и OnTriggerEnter
  • Величина силы высока, масса, сопротивление, и угловое сопротивление низким

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

Вот фрагмент кода из скрипта от игрока объекта:

public void OnTriggerEnter(Collider col) 
{ 
    if (col.gameObject.tag == "EnemyHit" && !invincible) 
    { 
     Debug.Log("The player has been hit!"); 

     //sets player as invincible 
     invincible = true; 

     // Set the damaged flag so the screen will flash. 
     hit = true; 

     timeOfHit = Time.time; 

     // Reduce the current health by the damage amount. 
     currentHealth -= 1; 

     GetComponent<Rigidbody>().AddForce(transform.forward * recoilThrust, ForceMode.Force); 
     Debug.Log("This is the force that is being added to the player when it is hit. : " + -transform.forward * recoilThrust); 
     //... 
     } 
} 

Я могу доказать (используя debug.log) функцию, что код достигает там, и сила рассчитывается.

+1

Хммм, ничего тут не кажется неправильным здесь, так как вы упоминаете, что столкновение обнаружено в конце вашего сообщения. Как вы перемещаете свой плеер? Является ли это основанной на физике или непосредственно изменяет позицию преобразования? – Serlite

+0

Не могли бы вы предоставить некоторые значения? Для рассчитанной силы и массы? Также снимок экрана жесткого тела, чтобы увидеть статистику там. –

+0

@Programmer - Я посмотрю, что я могу сделать. Большая часть кода была задокументирована, чтобы содержать имена программистов, поэтому я увижу, могу ли я взять их для версии сборки без имен людей. Serlite- Я использую CharacterController.Move(). GunnarB.- Масса, тяга и угловое сопротивление игрока равны 1. Масса противника, сопротивление и угловое сопротивление составляют 100. При повороте до 1 враг уходит. Проблема с проигрывателем. И сообщение, которое я получил, это: Это сила, которая добавляется к игроку при его ударе. : (4542.7, 1.4, -99896.8) Благодарим вас за оказанную помощь. – user3280790

ответ

0

Суммируя комментарии:

Rigidbody.AddForce не работает, когда объект имеет CharacterController помимо RigidBody. В этом случае эффект должен быть «фальшивым». Возможные пути можно найти здесь:

В основном вам нужно применить силу, используя CharacterController.Move.

0

Включен ли Kinematic? Это приведет к тому, что объект игнорирует физические силы.

+0

Ах, чтобы процитировать OP, «Игрок/Враг НЕ Кинематический». Хотя было бы хорошо догадаться, если бы он не написал это ... – Serlite

+0

Отмечено, что IsKinematic установлен на false. – user3280790

+0

Мой плохой. Прочтите слишком быстро –

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

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