Unity3D培训
美国上市Unity3D培训机构

400-111-8989

VR培训

Unity3D脚本:RPG的镜头跟随脚本

  • 发布:Unity3D培训
  • 来源:Unity3D教程
  • 时间:2015-12-29 16:07

Unity中copy另存为MouseFollow_ForRPG_CSharp.cs,拖给你的镜头即可。想跟随哪一个就把目标物体拖到Inspector里target那一栏。

自动跟随角色正后方,按住鼠标右键移动鼠标,围着角色上下左右旋转镜头,滚轮缩放,放开鼠标镜头自动平滑的转回后方跟随的角度,镜头高度不变,经典的魔兽世界控制方式。另外多一个魔兽没有的功能,左键按住移动鼠标可以冻结摄像机镜头上下左右拖动,因为只是演示控制,一般左键都是战斗相关的功能,不想要把那几行删掉就行。

因为要跟随,所以不管有没有输入每次update都要参考目标位置修正镜头位置的,否则就不叫跟随了。

using UnityEngine;

using System.Collections;

public class MouseFollow_ForRPG_CSharp : MonoBehaviour {

public GameObject target;

public float ZoomSpeed = 30;//镜头缩放速率

public float MovingSpeed = 1;//镜头移动速率

public float RotateSpeed = 1; //镜头旋转速率

public float distance = 20;//设置距离角色的距离

public float ViewAngle = 30;//设置镜头斜视的角度

void Start () {

if(target){

transform.rotation = Quaternion.Euler(ViewAngle, target.transform.rotation.eulerAngles.y,0 );

transform.position = transform.rotation * new Vector3(0,0,-distance)+target.transform.position;

}

}

void Update () {

Quaternion rotation;

Vector3 position;

float delta_x,delta_y;

float delta_rotation_x,delta_rotation_y;

if(target){

if(Input.GetMouseButton(0))

{

delta_x = Input.GetAxis("Mouse X") * MovingSpeed;

delta_y = Input.GetAxis("Mouse Y") * MovingSpeed;

rotation = Quaternion.Euler(0, transform.rotation.eulerAngles.y,0 );

transform.position = rotation * new Vector3(-delta_x,0,-delta_y)+ transform.position;

}

else{

if(Input.GetAxis("Mouse ScrollWheel")!= 0){

distance += -Input.GetAxis("Mouse ScrollWheel") * ZoomSpeed;

}

if (Input.GetMouseButton(1)) {

delta_rotation_x = Input.GetAxis("Mouse X") * RotateSpeed;

delta_rotation_y = -Input.GetAxis("Mouse Y") * RotateSpeed;

transform.Rotate(0,delta_rotation_x,0,Space.World);

transform.Rotate(delta_rotation_y,0,0);

}

else {

transform.rotation = Quaternion.Slerp(transform.rotation,

Quaternion.Euler(transform.rotation.eulerAngles.x, target.transform.rotation.eulerAngles.y,0

),Time.deltaTime*2);

}

transform.position = transform.rotation* new Vector3(0,0,-distance)+ target.transform.position;

}

}

}

}

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Unity3D脚本:Object在屏幕上快速定位
下一篇:Unity3D脚本:Unity3D 车身与玻璃材质
选择城市和中心
贵州省

广西省

海南省