У меня возникают проблемы с сохранением игровых объектов внутри содержащегося пространства. Когда они достигают края, происходит мгновенное отталкивание назад, но затем они пройдут прямо через стену.
Я использую Box Player на игроком и 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);
}
Некоторые, но не все пули будут уничтожены при попадании на сетчатую стену коллайдера. Игрок иногда ударяет его и останавливается, но обычно может проталкивать его. Как я могу делать столкновения с работой коллайдера сетки каждый раз?