一、第三人称跟随
public class newcube : MonoBehaviour {
public GameObject obj;
// 摄像机在水平方向与对象的距离
private float z=5f;
// 摄像机在垂直方向与对象的距离
private float y = 3f;
//保存摄像机跟随的位置
private Vector3 pri;
// 过渡速度Z
private float som=3f;
void Start()
{
}
void Update() {
//移动
if (Input.GetKey(KeyCode.W))
{
obj.transform.position = obj.transform.position + Vector3.forward;
}
if (Input.GetKey(KeyCode.S))
{
obj.transform.position = obj.transform.position + Vector3.back;
}
if (Input.GetKey(KeyCode.A))
{
obj.transform.position = obj.transform.position + Vector3.left;
}
if (Input.GetKey(KeyCode.D))
{
obj.transform.position = obj.transform.position + Vector3.right;
}
}
void LateUpdate () {
//摄像机跟随后的位置
pri = obj.transform.position + Vector3.up * y - Vector3.forward * z;
// 对当前位置进行差值计算
this.transform.position = Vector3.Lerp(transform.position,pri,Time.deltaTime*som);
// 使摄像机观察对象,摄像机指向目标游戏对象
transform.LookAt(obj.transform);
}
}
测试
二、图片的拖动
//定义一张图片
public Texture2D pic;
//定义一个bool值
private bool pl;
//定义一个GUI坐标的X值和Y的值
private float EndX = 0;
private float EndY = 0;
void Start()
{
pl = false;//开始的时候给布尔值一个false
}
void Update() {
if (Input.GetMouseButton(0)){
pl = true;
}else{
pl = false;
}
void OnGUI() {
if (pl==true)
{
GUI.DrawTexture(new Rect(Input.mousePosition.x - pic.width / 2, Screen.height - Input.mousePosition.y - pic.height / 2, pic.width, pic.height), pic);//当点击的时候见图片位置放在鼠标的中心
EndX =Input.mousePosition.x-pic.width/2;//GUI坐标的X值
EndY = Screen.height - Input.mousePosition.y - pic.height / 2;//GUI坐标的Y值
}
else {
if (Input.mousePosition.x <= Screen.width / 2)//如果鼠标点击的X轴小于屏幕宽度的一半
{
EndX = 0;//让其GUI的X坐标回到原点
}
else {
EndX = Screen.width - pic.width;//否则让GUI的X值到屏幕宽度的最大值
}
GUI.DrawTexture(new Rect(EndX, EndY, pic.width, pic.height), pic);//当松开鼠标的时候位置在靠左那么图片就会在左边否则在右边
}
}
测试.gif
网友评论