Hello !
i’m a beginner with Unity 3D, i work on a simple game with two island, and i try to teleport my first person controller from a point of my terrain to an another point of the same terrain.
To activate the teleport i have made two teleport object (a plane with collider) and i have create the Javascript :
static var logVar:String;
var target1: Transform;
var target2: Transform;
var speed = 50.0;
var jumpSpeed = 8.0;
var gravity = 10;
var nextTeleport = Time.time;
function OnControllerColliderHit(hit:ControllerColliderHit){
var destpoint : Vector3;
var movePos : Vector3;
var startPos : Vector3;
var therotation : Vector3;
if(hit.gameObject.tag == "teleport1" nextTeleport<Time.time)
{
movePos = Vector3(target2.position.x+10,100,target2.position.z+10);
startPos = Vector3(transform.position.x, 0, transform.position.z);
therotation = Vector3.Slerp(startPos, movePos, 1);
transform.LookAt(therotation);
nextTeleport=Time.time+30.0;
StopCoroutine("MovePlayer2");
StartCoroutine("MovePlayer2", movePos);
logVar="teleport2";
}
if(hit.gameObject.tag == "teleport2" nextTeleport<Time.time)
{
movePos = Vector3(target1.position.x+10,100,target1.position.z+10);
startPos = Vector3(transform.position.x, 0, transform.position.z);
therotation = Vector3.Slerp(startPos, movePos, 1);
transform.LookAt(therotation);
nextTeleport=Time.time+30.0;
StopCoroutine("MovePlayer2");
StartCoroutine("MovePlayer2", movePos);
logVar="teleport1";
}
}
function MovePlayer2(movePos : Vector3) {
var controller : CharacterController = GetComponent(CharacterController);
var dist = Vector3.Distance (transform.position, movePos);
var direction = transform.TransformDirection(Vector3.forward);
for (i = 0.0; i < 1.0; i += (speed * Time.deltaTime) / dist)
{
controller.Move(direction * speed);
yield;
}
}
@script RequireComponent(CharacterController)
my 2 teleport object have a tag “teleport1” and “teleport2”
Can some one help to move my first person controller from a point to another point, please ?