Я сделал свой собственный контроллер для игры, которую я пытаюсь сделать, но у меня возникли проблемы с ней. Всякий раз, когда противник приближается ко мне, и я не останавливаю своего персонажа вовремя, он телепортируется на голову врага.Удаленный игрок от врага
оттолкнуть:
void OnControllerColliderHit(ControllerColliderHit hit)
{
if (hit.gameObject.GetComponent<EnemyController>())
{
Debug.Log("!");
float pushPower = 0.05f;
Vector3 pushDir = hit.transform.forward;
characterController.Move(pushDir * pushPower);
}
}
Движение:
void FixedUpdate()
{
RaycastHit hitInfo;
Physics.SphereCast(transform.position, characterController.radius, Vector3.down, out hitInfo, characterController.height/2f);
desiredMove = Vector3.ProjectOnPlane(desiredMove, hitInfo.normal).normalized;
desiredMove = (transform.forward * Input.GetAxis("Vertical") + transform.right * Input.GetAxis("Horizontal")).normalized;
if(characterController.isGrounded)
{
moveDir.x = desiredMove.x * speed;
moveDir.z = desiredMove.z * speed;
isJumping = false;
if(Input.GetButtonDown("Jump"))
{
moveDir.y = jumpPower;
isWalking = false;
isJumping = true;
canRun = false;
}
if(Input.GetButton("Sprint") && canRun)
{
isWalking = false;
isRunning = true;
moveDir.x = desiredMove.x * runSpeed;
moveDir.z = desiredMove.z * runSpeed;
}
else
{
isRunning = false;
}
}
else
{
Falling();
}
characterController.Move(moveDir * Time.fixedDeltaTime);
}
Я решил добавить функцию, чтобы подтолкнуть игрока прочь, если он слишком близко к врагу, но я не могу получить его работать правильно. Прямо сейчас он подталкивает игрока в прямом направлении врага, поэтому он отлично работает, когда вы приближаетесь к врагу спереди, в других случаях мой игрок просто телепортируется перед врагом. Я хотел оттолкнуть игрока в направлении, в котором он приехал, но я не могу думать о том, как это сделать. Может ли кто-нибудь помочь мне с этим?
Пожалуйста, убедитесь, что соответствующий код встроен в сообщение. –
Сделано! Приносим извинения за неудобства! – Fiffe