Я программирую нисходящую и рутинную игру для класса. Мы хотим механика, где, если вас поразит враг, или враг ударит вас, вы получите «отброшен». К сожалению, независимо от того, что я пробовал, я не могу заставить врага или игрока реагировать на силу.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) функцию, что код достигает там, и сила рассчитывается.
Хммм, ничего тут не кажется неправильным здесь, так как вы упоминаете, что столкновение обнаружено в конце вашего сообщения. Как вы перемещаете свой плеер? Является ли это основанной на физике или непосредственно изменяет позицию преобразования? – Serlite
Не могли бы вы предоставить некоторые значения? Для рассчитанной силы и массы? Также снимок экрана жесткого тела, чтобы увидеть статистику там. –
@Programmer - Я посмотрю, что я могу сделать. Большая часть кода была задокументирована, чтобы содержать имена программистов, поэтому я увижу, могу ли я взять их для версии сборки без имен людей. Serlite- Я использую CharacterController.Move(). GunnarB.- Масса, тяга и угловое сопротивление игрока равны 1. Масса противника, сопротивление и угловое сопротивление составляют 100. При повороте до 1 враг уходит. Проблема с проигрывателем. И сообщение, которое я получил, это: Это сила, которая добавляется к игроку при его ударе. : (4542.7, 1.4, -99896.8) Благодарим вас за оказанную помощь. – user3280790