简体   繁体   中英

How to make Camera follow only the horizontal movement (x axis) of the player?

I am a super newbie in Unity and am learning by making my first game. I want the camera to follow the player, but only in the X axis. I had earlier made the camera a child of the player, but that didn't work as I wanted. So I whipped up a C# script to follow the player, as given below:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class cameraFollow : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        transform.position = new Vector3(GameObject.Find("robot_body").transform.position.x, 0f, 0f);
    }
}

However, this is showing only the blue background when run. Am I doing something wrong?

By setting your z position to 0 your camera probably ends up to close to everything in order to render it.

Try to not overwrite y and z with 0 but rather keep the current values:

// If possible rather already reference this via the Inspector!
[SerializeField] private GameObject robot;

private void Start()
{
    // As fallback get it only ONCE
    if(!robot) robot = GameObject.Find("robot_body");
}

void Update()
{
    // get the current position
    var position = transform.position;
    // overwrite only the X component
    position.x = robot.transform.position.x;
    // assign the new position back
    transform.position = position;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM