- Home /
Mounting a player character to a mount
Hi all,
I'm fairly new to Unity, and have been working on a third person game.
At the moment I have my main player character, which is a game object titled 'Player'. The player also has a pet which follows it around, and attacks enemies etc, and so far its working great.
I now want to add the option to have the Player character mount the Pet, disabling the follow script on the pet, and essentially changing the control input to the pet (so the Player assumes a 'sitting' animation, and the input moves the pet around).
I've been doing a fair bit of reading up on the issue, and have been trialling several different methods that have been asked on here- but none seem to address the issue entirely.
My first attempt involved making the player a parent of the pet object, and using a transform to move it to the player's location. While this worked, when I moved the player, the pet object stayed put.
I decided to change it around, and now have the player becoming a child of the pet object, and have used the following code in the ThirdPersonPlayerAnimation script on the Player object:
function Update ()
{
var playerController : ThirdPersonController = GetComponent(ThirdPersonController);
var currentSpeed = playerController.GetSpeed();
//mount code
var gigiTransform = GameObject.FindWithTag("Player").transform;
var mount = GameObject.FindWithTag("Petride").transform;
if (Input.GetButtonDown("Ride"))
{
if(gigiActive == true)
{
mount.parent = gigiTransform;
mount.transform.localPosition = Vector3.zero;
mount.transform.localRotation = Quaternion.identity;
gigiActive = false;
}
else
{
mount.transform.parent = null;
gigiActive = true;
}
}
From there I was going to add a simple if statement, that checked if (gigiActive == true) do her animation stuff. Else, change the character controller to the Pet.
Is this the best way to go about it, and how would I go about changing the input to the pets controller? If anyone has a better implementation method, i'd greatly appreciate it.
Thanks,
Luke
just have an input script/system/etc on the Steed, and have an input script/system/etc on the Hero.
simply, disable one or the other. you could literally just disable/enable the components in question, or I think better, just use a boolean.
so inside "petControlSystem" you would just have a boolean "doNthingHere" and lines of code like
if (doNothingHere) return;
in that way you can easily keep track of what is happening etc. Hope it helps!
Thanks,
I ended up getting a workable solution, although its not perfect. I find that trying to move the player object to the mount can cause issues, even after disabling the collider.
I'll keep working on it, and just wanted to say thanks for your idea!