как дела?
Я работаю над простой механикой отбрасывания, при которой, если мой персонаж сталкивается с именем «враг», жесткое тело игрока, которое перефразируется как (rb), имеет добавленную силу «назад».
Вот мой код, пожалуйста, обратитесь к тому, где я обведу звездочкой.
публичный класс Move: MonoBehaviour
{
public float speed;
private Rigidbody rb;
public int health;
private float knockback;
// Use this for initialization
void Start()
{
rb = GetComponent<Rigidbody>();
knockback = 2f;
}
void OnCollisionEnter(Collision col)
{
if (col.gameObject.name == "enemy")
{
health = health - 20; //**this works**
rb.AddRelativeForce(Vector3.forward * knockback); //**but this doesnt :c **
}
}
void death()
{
if (health <= 0)
{
print("i died");
}
}
void playerWalk()
{
var x = Input.GetAxis("Horizontal") * Time.deltaTime * 75f;
var z = Input.GetAxis("Vertical") * Time.deltaTime * 5f;
transform.Rotate(0, x, 0);
transform.Translate(0, 0, z);
}
void Update()
{
death();
playerWalk();
}
}
Проблема, как вы уже догадались, Мои триггеры не работают.
Моё здоровье = здоровье - 20; линия работает, но мой rb.addforce нет.
В чем здесь проблема? Спасибо:)
изменить 2 #
Просто хочу отредактировать это и сказать, что я выяснил проблему. Проблема была в том, что мое значение с плавающей точкой было недостаточно высоким xD