- Home /
The question is answered, right answer was accepted
Third Person Ladder Help!
Hi! I'm working on the climbing mechanics of my game which is fairly simple. The player jumps on the model with a trigger, and all of his movement controls stop, and a climb controls is activated:
function Climb(){
if(Input.GetKey("w")){
transform.position.y += ladderSpeed * Time.deltaTime;
}
if(Input.GetKey("s")){
transform.position.y -= ladderSpeed * Time.deltaTime;
}
if(Input.GetKey("a")){
transform.Translate(Vector3.left * Time.deltaTime * ladderSpeed);
}
if(Input.GetKey("d")){
transform.Translate(Vector3.right * Time.deltaTime * ladderSpeed);
}
}
function OnTriggerEnter(other : Collider){
if(other.gameObject.tag == "Ladder"){
canMove = false;
Climb();
if(Input.GetButton("Jump")){
transform.Translate(Vector3.down * Time.deltaTime * ladderSpeed * 4);
}
}
}
The problem is that this is a third person game, so I want to know how to snap my player to face DIRECTLY towards the ladder, no matter how the ladder is rotated. Thanks! :)
Sorry, the code samples don't work for $$anonymous$$e. You can ask me for specific code you'd like to see.
Answer by fafase · Dec 05, 2013 at 02:28 PM
Quaternion rotation = Quaternion.LookRotation(ladder.transform.forward);
transform.rotation = rotation;
This will depend where the forward of the ladder is pointing, all in all take a vector on the ladder that points opposite than the player and the player will align with it.
So how would the player know what "ladder" from ladder.transform.forward, is? ladder is not a transform object I place in the inspector, but it's an object with a trigger.
Is there a way I could recognize the ladder when the player enters the trigger?
The ladder is an object with a box collider as trigger attach to it. Attach a script with a OnTriggerEnter method, this script is on the ladder object so you have access to the transform of the ladder then you can also access the other object, the player:
function OnTriggerEnter(col:Collider){
if(col.gameObject.tag == "Player"){
col.gameObject.transform.rotation = Quaternion.LookRotation(transform.forward);
}
}
This worked perfectly. I had to change it to Quaternion.LookRotation(-transform.forward); so that the player will face what he's climbing. It even gives a nice jump boost at the top of the ladder.
Thank you for helping!:)
Follow this Question
Related Questions
climbing system for third person character 1 Answer
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
C# Third Person Controller CS1061 0 Answers
Getting an array of all triggers in the scene 1 Answer
movement script 2 Answers