Доброго времени суток, занимаюсь разработкой 3D игры на движке Unity. В этом деле я новичок, занимаюсь месяца 2, имею управление игроком в виде ходьбы, прыжка, ускорения и поворота камеры. Коды:
передвижение
using UnityEngine;
public class movement : MonoBehaviour
{
void Start()
{
}
private float speed = 5.0f;
void FixedUpdate()
{
Vector3 Movement = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
transform.Translate(Movement * speed * Time.deltaTime);
}
}
поворот камеры
using UnityEngine;
public class rotation : MonoBehaviour
{
public float sensitivity = 2.0f;
private float maxYAngle = 80.0f;
private float rotationX = 0.0f;
void Start()
{
}
private void FixedUpdate()
{
Cursor.lockState = CursorLockMode.Locked;
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
transform.parent.Rotate(Vector3.up * mouseX * sensitivity);
rotationX -= mouseY * sensitivity;
rotationX = Mathf.Clamp(rotationX, -maxYAngle, maxYAngle);
transform.localRotation = Quaternion.Euler(rotationX, 0.0f, 0.0f);
if (Input.GetKeyUp(KeyCode.Escape))
{
Cursor.lockState = CursorLockMode.None;
}
}
}
ускорение
using UnityEngine;
public class shift : MonoBehaviour
{
private bool isMoving = false;
private float movementSpeed = 4.0f;
void FixedUpdate()
{
if (Input.GetKeyDown("w"))
{
isMoving = true;
}
if (Input.GetKeyUp("w"))
{
isMoving = false;
}
if (Input.GetKey(KeyCode.LeftShift) & isMoving == true)
{
transform.position += transform.forward * Time.deltaTime * movementSpeed;
}
}
}
прыжок
using UnityEngine;
public class jump : MonoBehaviour
{
private float jumpHeight = 7f;
private Rigidbody rb;
private void Start()
{
rb = GetComponent<Rigidbody>();
}
private void FixedUpdate()
{
if (Input.GetButtonDown("Jump"))
{
RigidbodyJump();
}
}
private void RigidbodyJump()
{
rb.AddForce(Vector3.up * jumpHeight, ForceMode.Impulse);
}
}
Управление не супер хорошее, как минимум присутствует двойной прыжок, но работает. Также паралельно создаю карту в Blender, и когда дело дошло до работы с ней в Unity я начал накладывать Коллайдеры на объекты и столкнулся с такой проблемой:
Коллайдеры которые я накладываю на дорогу (пол) работают (вся карта импортировалась как один asset). Но самое интересное заключается в том что если я дам коллайдер зданию или просто препятствию ничего не будет работать, а если я запрыгну на верх здания все работает, и также если подпрыгну и залечу в стену я тоже не буду падать (это работает на любой объект который может заблокировать движение, даже который создал в Unity, при том что на обоих объектах стоят коллайдеры).
Кто знает помогите пожалуйста, как исправить данную проблему и сделать так что бы коллайдеры работали правильно.