У меня возникают проблемы с хранением игровых объектов внутри замкнутого пространства. Когда они достигают края, происходит некоторый мгновенный толчок назад, но затем они проходят прямо через стену.
Я использую Box Collider для игрока и Mesh Collider для стены уровня. У меня возникают проблемы с игровым персонажем (космическим кораблем), когда движение контролируется игроком. И со снарядами, которые стреляют и забывают, двигаясь с постоянной скоростью.
Это мой код движения для моего игрока. Он запускается в функции FixedUpdate()
.
//Movement
haxis = Input.GetAxis("Horizontal") * speed;
vaxis = Input.GetAxis("Vertical") * speed;
moveVector.x = haxis;
moveVector.z = vaxis;
if(moveVector.magnitude > 1)
{
moveVector.Normalize();
}
rigidbody.MovePosition(transform.position + moveVector * speed);
Пулям придается скорость, и двигатель рассчитывает их движение. Они используют Box Collider, и он установлен как триггер, поэтому у них нет физики. Но я использую OnTriggerEnter
, чтобы уничтожить их.
//Projectiles without physics collisiions
function OnTriggerEnter (other : Collider) {
Destroy(gameObject);
}
Некоторые, но не все пули будут уничтожены при попадании в стену меш-коллайдера. Игрок иногда ударяет по нему и останавливается, но обычно может пробить его. Как сделать так, чтобы столкновения с коллайдером сетки работали каждый раз?