unity4.6_摄像机跟随模式、观察模式融合(平滑)
来源:互联网 发布:数控编程培训教程 编辑:程序博客网 时间:2024/06/06 14:19
using UnityEngine;
using System.Collections;
public struct state
{
public int mode;
public Quaternion rotation;
public Vector3 position;
public state(int m,Quaternion q,Vector3 p)
{
mode = m;
rotation = q;
position = p;
}
}
public class Camara : MonoBehaviour {
public Transform player;//
public float disToPlayer;
public Vector3 startPosition;
public Quaternion startRotation;
public float Dx;
public float Dy;
public Vector3 targetPosition;
public Quaternion targetRotation;
public float mouseX;
public float mouseY;
// Use this for initialization
void Start () {
mouseX = 0;
mouseY = 0;
player = GameObject.FindWithTag ("Player").transform;
disToPlayer = 200;
startPosition = new Vector3 (0,50,-disToPlayer);
startRotation = player.rotation;
Dx = 0;
Dy = 0;
transform.position = player.rotation * startPosition + player.position;
transform.rotation = player.rotation * startRotation;
}
// Update is called once per frame
void Update () {
mouseX = 0;
mouseY = 0;
//Mouse scrollWheel hange origin distance from camera to player;
float sw = Input.GetAxis ("Mouse ScrollWheel");
if (Input.GetMouseButton (0))
{
mouseX=Input.GetAxis("Mouse X");
mouseY=Input.GetAxis("Mouse Y");
}
if (Input.GetMouseButton (1))
{
player.Rotate(0,Input.GetAxis("Mouse X")*StaticAllInfo.playerRotateSpeed*Time.deltaTime,0,Space.World);
Dx=0;
Dy=0;
}
if (Input.GetKey (KeyCode.LeftControl) || Input.GetKey (KeyCode.RightControl))
Screen.lockCursor = !Screen.lockCursor;
disToPlayer -= sw * StaticAllInfo.scrollSpeed * Time.deltaTime;
startPosition = new Vector3 (0,50,-disToPlayer);
Dx += mouseX*StaticAllInfo.cameraRotateSpeed*Time.deltaTime;
Dy += mouseY*StaticAllInfo.cameraRotateSpeed*Time.deltaTime;
Dx = Dx%360;
Dy = Mathf.Clamp (Dy,-60,10);
Quaternion R = Quaternion.Euler (-Dy,Dx,0);
targetPosition = player.rotation * R*startPosition + player.position;
targetRotation = player.rotation * R*startRotation;
transform.position = Vector3.Lerp (transform.position,targetPosition,Time.deltaTime*3);
transform.rotation = Quaternion.Lerp (transform.rotation,targetRotation,Time.deltaTime*3);
}
}
using System.Collections;
public struct state
{
public int mode;
public Quaternion rotation;
public Vector3 position;
public state(int m,Quaternion q,Vector3 p)
{
mode = m;
rotation = q;
position = p;
}
}
public class Camara : MonoBehaviour {
public Transform player;//
public float disToPlayer;
public Vector3 startPosition;
public Quaternion startRotation;
public float Dx;
public float Dy;
public Vector3 targetPosition;
public Quaternion targetRotation;
public float mouseX;
public float mouseY;
// Use this for initialization
void Start () {
mouseX = 0;
mouseY = 0;
player = GameObject.FindWithTag ("Player").transform;
disToPlayer = 200;
startPosition = new Vector3 (0,50,-disToPlayer);
startRotation = player.rotation;
Dx = 0;
Dy = 0;
transform.position = player.rotation * startPosition + player.position;
transform.rotation = player.rotation * startRotation;
}
// Update is called once per frame
void Update () {
mouseX = 0;
mouseY = 0;
//Mouse scrollWheel hange origin distance from camera to player;
float sw = Input.GetAxis ("Mouse ScrollWheel");
if (Input.GetMouseButton (0))
{
mouseX=Input.GetAxis("Mouse X");
mouseY=Input.GetAxis("Mouse Y");
}
if (Input.GetMouseButton (1))
{
player.Rotate(0,Input.GetAxis("Mouse X")*StaticAllInfo.playerRotateSpeed*Time.deltaTime,0,Space.World);
Dx=0;
Dy=0;
}
if (Input.GetKey (KeyCode.LeftControl) || Input.GetKey (KeyCode.RightControl))
Screen.lockCursor = !Screen.lockCursor;
disToPlayer -= sw * StaticAllInfo.scrollSpeed * Time.deltaTime;
startPosition = new Vector3 (0,50,-disToPlayer);
Dx += mouseX*StaticAllInfo.cameraRotateSpeed*Time.deltaTime;
Dy += mouseY*StaticAllInfo.cameraRotateSpeed*Time.deltaTime;
Dx = Dx%360;
Dy = Mathf.Clamp (Dy,-60,10);
Quaternion R = Quaternion.Euler (-Dy,Dx,0);
targetPosition = player.rotation * R*startPosition + player.position;
targetRotation = player.rotation * R*startRotation;
transform.position = Vector3.Lerp (transform.position,targetPosition,Time.deltaTime*3);
transform.rotation = Quaternion.Lerp (transform.rotation,targetRotation,Time.deltaTime*3);
}
}
0 0
- unity4.6_摄像机跟随模式、观察模式融合(平滑)
- 摄像机平滑跟随
- Unity 摄像机平滑跟随
- Unity3D 摄像机平滑跟随角色
- Unity 3D--摄像机平滑跟随(方法一)
- Unity 3D--摄像机平滑跟随(方法二)
- Unity 3D--摄像机平滑跟随(方法一)
- Unity 3D--摄像机平滑跟随(方法二)
- Unity 3D--摄像机平滑跟随(方法一)
- 观察模式
- Observer(观察器)模式
- 设计模式-观察模式
- Unity)摄像机Camera跟随
- 设计模式:Observer(观察器)
- 键-值观察(KVO模式)
- 观察着模式
- 设计模式观察-Singleton
- 设计模式观察-Singleton
- 如何不翻墙下载Android代码
- 实体框架的优化应该考虑的角度--决定技术选型
- cocostduio Text 控件 添加监听无法响应
- Android学习笔记:使用SurfaceView制作简单游戏(1)
- 使用代码刷QQ的跨年红包
- unity4.6_摄像机跟随模式、观察模式融合(平滑)
- STL中vector的capacity、size、reserve、resize
- 【机房收费系统】——工厂
- 如何使用NSOperation
- 支付宝集成获取私钥与公钥
- BI
- 邻接矩阵存储结构,深度,广度遍历。
- 【PHP】PHP转换图片为ico格式源码
- springMVC @Value 注解取不到值