Je programme une petite application pour visiter des bâtiments. Je veux ajouter une fonction qui permet de se téléporter d'un bâtiment à un autre à partir d'un menu pause et de boutons. Le problème est que le script de téléportation ne fonctionne absolument pas avec mon player (qui peut se déplacer et regarder autours de lui).
Pourtant le script fonctionne parfaitement avec une capsule. Ainsi je ne trouve pas de solution pour téléporter mon player sauf en supprimant la ligne "player.Move(MoveDirection * Time.deltaTime);". Or cette ligne me permet de me déplacer
Je vous joins les deux scripts ainsi que quelques photos utiles.
Merci de vous pencher sur mon problème et de m'aider à le résoudre.
PlayerCC Script
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerCC : MonoBehaviour
{
public float WalkSpeed = 4f;
public float SprintSpeed = 6f;
public float JumpSpeed = 4f;
public float sensitivity = 2.5f;
public Vector3 MoveDirection = new Vector3(0, 0, 0);
CharacterController player;
public GameObject eyes;
float rotX;
float rotY;
float gravity = 9.81f;
// Start is called before the first frame update
void Start()
{
player = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
rotX += Input.GetAxis("Mouse X") * sensitivity;
if(rotY < -180f)
{
rotY = 180f;
}
if(rotY > 180f)
{
rotY = -180f;
}
rotY -= Input.GetAxis("Mouse Y") * sensitivity;
rotY = Mathf.Clamp(rotY, -90, 90);
if(player.isGrounded)
{
MoveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
MoveDirection = transform.rotation * MoveDirection;
if(Input.GetKey(KeyCode.LeftShift))
{
MoveDirection *= SprintSpeed;
}
else
{
MoveDirection *= WalkSpeed;
}
if(Input.GetButton("Jump"))
{
MoveDirection.y = JumpSpeed;
}
}
transform.localRotation = Quaternion.Euler(0, rotX, 0);
eyes.transform.localRotation = Quaternion.Euler(rotY, transform.localRotation.y, 0);
MoveDirection.y -= gravity * Time.deltaTime;
player.Move(MoveDirection * Time.deltaTime);
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Teleport : MonoBehaviour
{
public GameObject Target;
public GameObject TPA;
public GameObject TPB;
public GameObject TPC;
public GameObject TPE;
public void BATA()
{
Target.transform.position = TPA.gameObject.transform.position;
}
public void BATB()
{
Target.transform.position = TPB.gameObject.transform.position;
}
public void BATC()
{
Target.transform.position = TPC.gameObject.transform.position;
}
public void BATE()
{
Target.transform.position = TPE.gameObject.transform.position;
}
}