Я бы начал с чего-то большего. Это сценарий, который вы бы добавили на свою бейсбольную биту.
Часть 1:
using UnityEngine;
using System.Collections;
public class KickTheBall : MonoBehaviour
{
public float forceFactor = 10f;
private float kickForce = 50f;
void OnCollisionEnter(Collision col)
{
if(col.gameObject.tag == "Ball") // Do not forget assign tag to the field
{
rb = col.gameobject.GetComponent<Rigidbody>();
rb.AddForce(transform.right * kickForce);
}
}
}
Я упростил вашу функцию AddForce для демонстрационных целей. Не стесняйтесь заменить его более сложной функцией AddForce, если все работает.
Часть 2:
Если вы действительно хотите включить часть, в которой нажатие клавиши пробела усиливает удар, добавьте следующее:
void Update()
{
if(Input.GetKey(KeyCode.Space))
{
kickForce += 0.5f;
}
}
и добавьте в конце oncollisionenter
kickForce = 0;
Что это будет делать, это наращивать силу, пока вы удерживаете кнопку пробела. После успешного удара сила сбрасывается до 0. Поэтому последующие столкновения не приведут к удару, пока кнопка пробела не будет удержана снова.
Дайте мне знать, если это что-то для вас.