Установка местоположения объектов для другого объекта

#c#

Вопрос:

Я создаю гоночную игру с намеренно ужасным рулевым управлением, в которой персонаж вращается вокруг центра карты. У игрока также есть возможность установить точку поворота в их текущее местоположение с помощью пробела. Он работает менее чем в 25% случаев. Код для этой части кода является

 if (Input.GetKeyDown("space"))
    {
        PivotPoint.position = CharacterRotation.position;
    }
 

Остальная часть кода находится здесь

     using System.Collections;
using System.Collections.Generic;
using System.Data;
using UnityEngine;

public class PlayerController : MonoBehaviour
{   //movement
    public CharacterController characterController;
    public float speed = 6;
    private float hiddenSpeed = 6;
    public float sprintMultiplier = 1.75f;
    //rotation
    public Transform CharacterRotation;
    public Transform PivotPoint;
    //gravity
    public float gravity = 5f;
    private float verticalSpeed = 0;
    //camera and camera rotation
    public Transform cameraHolder;
    public float mouseSensitivity = 2f;
    public float upLimit = -50;
    public float downLimit = 50;

    void start()
    {
        hiddenSpeed = speed;
    }

    void Update()
    {
        Move();
        Rotate();
        Inputs();
    }

    private void Move()
    {   //movement
        float horizontalMove = 0;
        float verticalMove = Input.GetAxis("Vertical");
        //gravity
        if (characterController.isGrounded) verticalSpeed = 0;
        else verticalSpeed -= gravity * Time.deltaTime;
        //move update
        Vector3 gravityMove = new Vector3(0, verticalSpeed, 0);
        Vector3 move = transform.forward * verticalMove   transform.right * horizontalMove;
        characterController.Move(speed * Time.deltaTime * move   gravityMove * Time.deltaTime);
    }

    public void Rotate()
    {
        float horizontalRotation = Input.GetAxis("Horizontal");
        float verticalRotation = Input.GetAxis("Mouse Y");

        transform.Rotate(0, horizontalRotation * mouseSensitivity, 0);
        cameraHolder.Rotate(-verticalRotation * mouseSensitivity, 0, 0);

        Vector3 currentRotation = cameraHolder.localEulerAngles;
        if (currentRotation.x > 180) currentRotation.x -= 360;
        currentRotation.x = Mathf.Clamp(currentRotation.x, upLimit, downLimit);
        cameraHolder.localRotation = Quaternion.Euler(currentRotation);
    }
    public void Inputs()
    {
        if (Input.GetKeyDown("space"))
        {
            PivotPoint.position = CharacterRotation.position;
        }

        if (Input.GetKey("r"))
        {
            CharacterRotation.position = new Vector3(0f, .133f, 0f);
            PivotPoint.position = new Vector3(0f, .133f, 0f);
        }
    }
}
 

Комментарии:

1. Не могли бы вы уточнить, пожалуйста, — когда вы говорите, что это работает в 25% случаев, какое поведение вы видите в остальных 75%? Он использует неправильное расположение или ему не хватает нажатия клавиши пробела?

2. Большую часть времени куб перемещается на удвоенный текущий радиус, когда должна перемещаться только точка поворота, в то время как куб остается неподвижным.