fjkrl 发表于 2013-3-4 22:44

Unity3D 第二课如何让摄像机跟随你的角色

本帖最后由 fjkrl 于 2013-3-5 00:22 编辑

本教程接上面一课
我现在场景中建立一个角色,这里我用一个方块代替,方块命名为Player,
[*]    //用来获取一个角色对象
[*]    public GameObject target;

复制代码
原先MouseLook代码我不做修改
Update ()里初始化
[*]//这里的Pllayer是我获取的那个对象
[*]target = GameObject.Find("Player");

复制代码
下面贴出全部代码
[*]    using UnityEngine;
[*]    using System.Collections;
[*]   
[*]    public class MouseLook : MonoBehaviour {
[*]            public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
[*]            public RotationAxes axes = RotationAxes.MouseXAndY;
[*]            public float sensitivityX = 15F;
[*]            public float sensitivityY = 15F;
[*]            public float minimumX = -360F;
[*]            public float maximumX = 360F;
[*]            public float minimumY = -85F;
[*]            public float maximumY = 4F;
[*]            public float rotationY = 0F;
[*]            public GameObject target;
[*]            void Update ()
[*]            {
[*]                  target = GameObject.Find("Player");
[*]                  if(Input.GetMouseButton(1))
[*]                  {
[*]                            transform.position = target.transform.position;
[*]                            if (axes == RotationAxes.MouseXAndY)
[*]                            {
[*]                                    float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
[*]                                    rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
[*]                                    rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
[*]                                    transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
[*]                            }
[*]                            else if (axes == RotationAxes.MouseX)
[*]                            {
[*]                                    transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
[*]                            }
[*]                            else
[*]                            {
[*]                                    rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
[*]                                    rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
[*]                                    transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
[*]                            }
[*]                            SetDistance();
[*]                  }
[*]                  else
[*]                {
[*]                  transform.position = target.transform.position;
[*]                           SetDistance();
[*]                }
[*]            }
[*]            void Start ()
[*]            {
[*]                  if (rigidbody)
[*]                  {
[*]                            rigidbody.freezeRotation = true;
[*]                            transform.position = target.transform.position;
[*]                  }
[*]            }
[*]            //设置相机与人物之间的距离
[*]            void SetDistance()
[*]            {
[*]               transform.Translate(Vector3.forward * theDistance);
[*]            }
[*]    }

复制代码
现在大家试试动下鼠标摄像机是不是以一个物体为中心点旋转了哇

ogre 发表于 2013-8-25 17:51

theDistance参数是怎么来的?谢谢

766474870 发表于 2016-7-21 23:13

22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy22sy

空柯爆酒 发表于 2016-10-31 11:39

可以可以................

st闪光弹 发表于 2017-2-10 12:04

楼主是超人

☆花谢蝶飞☆ 发表于 2017-2-10 12:31

好帖就是要顶

st闪光弹 发表于 2017-2-10 12:25

难得一见的好帖

☆花谢蝶飞☆ 发表于 2017-2-10 12:41

很好哦

st闪光弹 发表于 2017-2-10 12:11

LZ真是人才

jykxinter 发表于 2017-3-10 18:37

楼主是超人
页: [1] 2 3 4 5
查看完整版本: Unity3D 第二课如何让摄像机跟随你的角色