【问题标题】:How to make camera follow a car?如何让相机跟随汽车?
【发布时间】:2015-12-21 14:42:06
【问题描述】:

我正在统一开发赛车游戏。我将汽车移动脚本放在机器人汽车和主摄像头中。相机在前进时跟随汽车,但是当汽车与其他物体发生碰撞并且汽车转移其位置时,或者当我转弯时汽车也转向相机但比汽车早,因此汽车超出范围。我尝试放置角色控制器,尝试将相机放置在层次结构中,即使使用流畅的跟随脚本,它也不能流畅地跟随汽车。所以告诉我如何让相机跟随汽车,就像我们在其他赛车游戏中看到的那样。

【问题讨论】:

    标签: unityscript


    【解决方案1】:

    对于这种类型的游戏(相机设置为跟随某个对象,从 A 地到 B 地),我推荐的做法是创建一个空的游戏对象,您希望相机在该游戏对象上结束于汽车,另一个空的游戏对象gameobject 以汽车为父对象,用于您希望相机注视的位置。

    在此之后,使用标准资产附带的基本相机跟随和相机注视脚本,并使用平滑因子来适应您的游戏。您必须确保为您的项目导入了脚本包。

    或者,如果包已导入,请选择您的相机,进入组件菜单,然后在“相机控制”下选择“平滑跟随”脚本。

    如果您需要相机根据(例如)汽车在路上的位置动态改变位置,我会考虑相同的解决方案,但使用 iTween 沿预定义路径改变两个游戏对象的位置。

    更多关于: 平滑跟随:http://wiki.unity3d.com/index.php/SmoothFollow2 看:http://docs.unity3d.com/ScriptReference/Transform.LookAt.html

    【讨论】:

      【解决方案2】:

      只需将相机作为子对象添加到汽车

      【讨论】:

        【解决方案3】:

        设置游戏摄像机确实具有挑战性,尤其是在车辆摄像机控制方面,因为摄像机移动速度取决于车辆速度,使用 C# 脚本控制车辆摄像机有点困难。

        我强烈建议您在“Cinemachine 包”中使用统一构建 ' 你可以免费安装它。如果你想了解电影机 去看看这个视频 https://www.youtube.com/watchv=X33t13gOBFw&list=PLOBPWyvPXShNN01VQ1LLPqfCtqeRo95Z1&index=23 顺便说一句,在这个视频中,他们正在为车辆设置电影摄影机

        【讨论】:

        • 如果您想要一个高级摄像头,那么您可以使用 RCC、Edy Physics 和 NWH 车辆物理等统一资产商店中的任何汽车控制器套件
        【解决方案4】:

        你可以

        将相机设置为您汽车的子项(您想要 关注)

        写下这段代码taken from here

        using UnityEngine;
        using System.Collections;
        
        public class CameraController : MonoBehaviour {
        
            public GameObject player;        //Public variable to store a reference to the player game object
        
        
            private Vector3 offset;            //Private variable to store the offset distance between the player and camera
        
            // Use this for initialization
            void Start () 
            {
                //Calculate and store the offset value by getting the distance between the player's position and camera's position.
                offset = transform.position - player.transform.position;
            }
        
            // LateUpdate is called after Update each frame
            void LateUpdate () 
            {
                // Set the position of the camera's transform to be the same as the player's, but offset by the calculated offset distance.
                transform.position = player.transform.position + offset;
            }
        }
        

        【讨论】:

          【解决方案5】:

          一种方法是将相机设置为汽车的子级。这将基本上锁定相机,并在汽车和相机之间的位置和旋转中为其提供相同的偏移量。您也可以尝试 Cinemachine,它是一个包含许多有用功能的软件包,它们基本上可以做同样的事情,同时还为您提供一些您可能想要的更多功能。如果您真的想深入了解它,这里有相当多的文档:

          https://unity.com/unity/features/editor/art-and-design/cinemachine

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-01-20
            • 1970-01-01
            • 1970-01-01
            • 2014-08-23
            • 2017-07-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多