Я работаю над игрой на основе физики для Unity Box, для этого я толкаю коробку.Я хочу, чтобы игрок мог перемещать камеру по оси X вокруг рамки, но это означает, что если игрок перемещает камеру к задней части рамки, движение меняется на противоположное.
Я попытался посмотреть надругие сообщения / учебники, но никто не делает то, что я пытаюсь сделать.
Вот мой код движения игрока,
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
Rigidbody rb;
public float forwardBackForce = 1000f;
public float leftRightForce = 1000f;
// Gets component Rigidbody
void Start()
{
rb = GetComponent<Rigidbody>();
}
// Used for movement
void FixedUpdate()
{
if (Input.GetKey(KeyCode.W))
{
rb.AddForce(0, 0, forwardBackForce * Time.deltaTime);
}
if (Input.GetKey(KeyCode.S))
{
rb.AddForce(0, 0, -forwardBackForce * Time.deltaTime);
}
if (Input.GetKey(KeyCode.A))
{
rb.AddForce(-leftRightForce * Time.deltaTime, 0, 0);
}
if (Input.GetKey(KeyCode.D))
{
rb.AddForce(leftRightForce * Time.deltaTime, 0, 0);
}
}
}
А вот мой код движения камеры,
using System.Collections.Generic;
using UnityEngine;
public class playerCamera : MonoBehaviour
{
public Transform PlayerTransform;
private Vector3 _cameraOffset;
[Range(0.01f, 1.0f)]
public float SmoothFactor = 0.05f;
public bool LookAtPlayer = false;
public bool RotateAroundPlayer = true;
public float RotationSpeed = 5.0f;
// Start is called before the first frame update
void Start()
{
_cameraOffset = transform.position - PlayerTransform.position;
}
// LateUpdate is called after Update
void LateUpdate()
{
if(RotateAroundPlayer)
{
Quaternion camTurnX = Quaternion.AngleAxis(Input.GetAxis("Mouse X") * RotationSpeed, Vector3.up);
_cameraOffset = camTurnX * _cameraOffset;
}
Vector3 newPos = PlayerTransform.position + _cameraOffset;
transform.position = Vector3.Slerp(transform.position, newPos, SmoothFactor);
if (LookAtPlayer || RotateAroundPlayer)
transform.LookAt(PlayerTransform);
}
}
Все, что мне нужно, это способ заставить игрока двигаться относительно камеры.
И последнее замечание: я работаю над системой столкновений, поэтому коробка не может продолжать давить на стену.