摄像机跟随物体方法一是把摄像机设置为物体Player的子物体,给Player添加移动脚步就可以摄像机跟随Player移动。移动的简单脚步using UnityEngine;
using System.Collections;
//移动脚步
public class das : MonoBehaviour
{
//设置速度,值可以改动试试
private float speed = 10f;
void Start()
{
}
void Update()
{
//获取unity自带的移动W,A,S,D和上下左右键
float h = Input.GetAxis("Horizontal") * speed * Time.deltaTime;
float v = Input.GetAxis("Vertical") * speed * Time.deltaTime;
//移动物体,我现在是让物体的X,Y的坐标变化,transform.Translate(h, 0, v)是X,Z的坐标变化,这个根据移动要求可修改
transform.Translate(h, v, 0);
}
}
这样就可以实现简单的摄像机跟随物体了,可是根据我的个人使用情况,我是很少使用,因为我觉得总是有点卡的感觉,不推荐使用。接下来用一下方法二:代码控制摄像机跟随物体。</pre><pre name="code" class="csharp">using UnityEngine;
using System.Collections;
//脚本挂在摄像机上
public class FollowPlayer : MonoBehaviour
{
//定义一个Transform类型的player
private Transform player;
//定义摄像机与人物的偏移位置
private Vector3 offsetStation;
//在Awake里获取到移动物体Player的transform组件,其实也是初始化定义的字段
void Awake()
{
//得到组件,先是给Player设置个Tag,当然也可以用Find来找Player名的方式,下面;但是不建议使用。
// player = GameObject.Find("Player").transform;
player = GameObject.FindGameObjectWithTag("Role").transform;
//让摄像机朝向人物的位置
transform.LookAt(player.position);
//得到偏移量
offsetStation = transform.position - player.position;
}
void Update()
{
//让摄像机的位置= 人物行走的位置+与偏移量的相加
transform.position = offsetStation + player.position;
}
}
这样摄像机就可以跟随物体Player移动了。
using UnityEngine;
using System.Collections;
//移动脚步
public class das : MonoBehaviour
{
//设置速度,值可以改动试试
private float speed = 10f;
void Start()
{
}
void Update()
{
//获取unity自带的移动W,A,S,D和上下左右键
float h = Input.GetAxis("Horizontal") * speed * Time.deltaTime;
float v = Input.GetAxis("Vertical") * speed * Time.deltaTime;
//移动物体,我现在是让物体的X,Y的坐标变化,transform.Translate(h, 0, v)是X,Z的坐标变化,这个根据移动要求可修改
transform.Translate(h, v, 0);
}
}
</pre><pre name="code" class="csharp">using UnityEngine;
using System.Collections;
//脚本挂在摄像机上
public class FollowPlayer : MonoBehaviour
{
//定义一个Transform类型的player
private Transform player;
//定义摄像机与人物的偏移位置
private Vector3 offsetStation;
//在Awake里获取到移动物体Player的transform组件,其实也是初始化定义的字段
void Awake()
{
//得到组件,先是给Player设置个Tag,当然也可以用Find来找Player名的方式,下面;但是不建议使用。
// player = GameObject.Find("Player").transform;
player = GameObject.FindGameObjectWithTag("Role").transform;
//让摄像机朝向人物的位置
transform.LookAt(player.position);
//得到偏移量
offsetStation = transform.position - player.position;
}
void Update()
{
//让摄像机的位置= 人物行走的位置+与偏移量的相加
transform.position = offsetStation + player.position;
}
}