基于Unity3D的相机功能的实现(六)—— 上帝视角(王者荣耀视角)_unity overlook-程序员宅基地

技术标签: 王者荣耀视角  Unity3D  上帝视角  unity3d  相机  

在MOBA游戏中,上帝视角是一个很实用的功能。

代码如下:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;

//上帝视角(王者荣耀视角)
public class OverlookCamera : MonoBehaviour
{
	//Camera 水平移动速度
	public float speedH = 20f;
	//Camera 垂直移动速度
	public float speedV = 20f;
	//x方向最小值
	public float minX = -67f;
	//x方向最大值
	public float maxX = 70f;
	//y方向最小值
	public float minY = -75f;
	//y方向最大值
	public float maxY = 50f;
	//插值速度
	public float lerpSpeed=4f;

	//位置插值目标 
	private Vector3 posTarget;
	//屏幕的宽度
	private float screenWidth;
	//屏幕的高度
	private float screenHeight;

	void Start(){
		screenWidth = Screen.width;
		screenHeight = Screen.height;
		posTarget = transform.position;
	}
	void Update()
	{
		if (Input.touchCount == 1) {
			Vector2 touchPos = Input.GetTouch (0).position;
			if (touchPos.x >= screenWidth - 40 && Input.GetTouch (0).phase == TouchPhase.Stationary) {
				if (transform.position.x <= maxX)
					posTarget = posTarget + Vector3.right * speedH * 0.02f;
			} else if (touchPos.x <= 40 && Input.GetTouch (0).phase == TouchPhase.Stationary) {
				if (transform.position.x >= minX)
					posTarget = posTarget + Vector3.left * speedH * 0.02f;
			} else if (touchPos.y > screenHeight - 40 && Input.GetTouch (0).phase == TouchPhase.Stationary) {
				if (transform.position.z <= maxY)
					posTarget = posTarget + Vector3.forward * speedV * 0.02f;
			} else if (touchPos.y < 40 && Input.GetTouch (0).phase == TouchPhase.Stationary) {
				if (transform.position.z >= minY)
					posTarget = posTarget + Vector3.back * speedV * 0.02f;
			} else {
				float x = Input.GetAxis ("Mouse X");
				float y = Input.GetAxis ("Mouse Y");
				//x方向在最大值和最小值
				if (transform.position.x >= minX && transform.position.x <= maxX) {
					if (x < -0.1f) {
						posTarget = posTarget + Vector3.right * -speedH * 0.02f;
					} else if (x > 0.1f) {
						posTarget = posTarget + Vector3.left * -speedH * 0.02f;
					}
				} else {
					//x小于最小值
					if (transform.position.x < minX) {
						if (x > 0.1f) {
							posTarget = posTarget + Vector3.left * -speedH * 0.02f;
						}
					}
					//x大于最小值
					else {
						if (x < -0.1f) {
							posTarget = posTarget + Vector3.right * -speedH * 0.02f;
						}
					}
				}
				//y方向在最大值和最小值
				if (transform.position.z >= minY && transform.position.z <= maxY) {
					if (y < -0.1f) {
						posTarget = posTarget + Vector3.forward * -speedV * 0.02f;
					} else if (y > 0.1f) {
						posTarget = posTarget + Vector3.back * -speedV * 0.02f;
					}
				} else {
					//y小于最小值
					if (transform.position.z < minY) {
						if (y > 0.1f) {
							posTarget = posTarget + Vector3.back * -speedV * 0.02f;
						}
					}
					//y大于最小值
					else {
						if (y < -0.1f) {
							posTarget = posTarget + Vector3.forward * -speedV * 0.02f;
						}
					}
				}
			}
		}
	}
	void LateUpdate ()
	{
		if (Vector3.Distance (posTarget, transform.position) > 0.01f) {
			transform.position = Vector3.Lerp (transform.position, posTarget, Time.deltaTime * lerpSpeed);
		} else {
			transform.position = posTarget;
		}
	}
}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/YongshuangZhao/article/details/78765553

智能推荐

html文字滚动_html滚动-程序员宅基地

文章浏览阅读2.4k次。HTML之marquee(文字滚动)详解语法:以下是一个最简单的例子:代码如下:Hello, World下面这两个事件经常用到:onMouseOut=“this.start()” :用来设置鼠标移出该区域时继续滚动onMouseOver=“this.stop()”:用来设置鼠标移入该区域时停止滚动代码如下:onMouseOut=“this.start()” :用来设置鼠标移出该区域时继续滚动 onMouseOver=“this.stop()”:用来设置鼠标移入该区域时停止滚动这是一个完_html滚动

leecode++理解_auto row : rows-程序员宅基地

leecode++理解:本文介绍了一些LeetCode题目的解析和思路,包括两数相加、寻找有序数组的中位数、最长字串、整数反转等。还讨论了一些下标规律和正则表达式匹配问题。

Java通过Socket实现UDP编程及Socket总结_java xsocket jar包,实现udp服务端-程序员宅基地

文章浏览阅读8.5k次,点赞2次,收藏28次。UDPServer.javaimport java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/* * 服务器端,实现基于UDP的用户登陆 */public class UDPServer { public s_java xsocket jar包,实现udp服务端

pmp项目管理_pmp项目管理实施-程序员宅基地

文章浏览阅读692次,点赞2次,收藏3次。规划采购管理是记录项目采购决策、明确采购方法,及识别潜在卖方的过程。本过程的主要作用 是,确定是否从项目外部获取货物和服务,如果是,则还要确定将在什么时间、以什么方式获取什 么货物和服务。货物和服务可从执行组织的其他部门采购,或者从外部渠道采购。本过程仅开展一 次或仅在项目的预定义点开展。图 12-2 描述本过程的输入、工具与技术和输出。图 12-3 是本过程的 数据流向图。..._pmp项目管理实施

linux bash脚本_如何在Linux终端中显示日期和时间(并在Bash脚本中使用它)-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏15次。linux bash脚本Fatmawati Achmad Zaenuri/Shutterstock.comFatmawati Achmad Zaenuri / Shutterstock.com The date command is found in the Bash shell, which is the default shell in most Linux distributions and..._linux terminal显示时间

npm安装报错的解决办法-程序员宅基地

文章浏览阅读3.6k次。npm报错处理_npm安装报错

随便推点

Npm包管理工具_h5页面能使用npm包管理工具么-程序员宅基地

文章浏览阅读162次。一、介绍Npm包管理工具,JS开发者能够更方便的分享和复用以及更新代码,被复用的代码被称为包或者模块,一个模块中包含了一到多个js文件。在模块中一般还会包含一个package.json的文件,该文件中包含了该模块的配置信息。一个完整的项目,需要依赖很多个模块。一个完整的npm包含三部分npm网站-----用于预览npm管理的包注册机制-----用于上传包,使用数据库来维护包与上传者..._h5页面能使用npm包管理工具么

google html5 摄像头,chrome html5如何调用摄像头?-程序员宅基地

文章浏览阅读154次。如果是通过chrome调用摄像头的话:navigator.mediaDevices.enumerateDevices().then(gotDevices).catch(errorCallback);...function gotDevices(deviceInfos) {...for (var i = 0; i !== deviceInfos.length; ++i) {var deviceInf..._navigator.mediadevices.enumeratedevices() 将摄像头渲染到 video

TPM概述-程序员宅基地

文章浏览阅读337次。TPM(Trusted Platform Module)安全芯片,是指符合TPM(可信赖平台模块)标准的安全芯片。标准由TCG(可信赖计算组织,Trusted Computing Group)提出,目前最新版本为2.0。符合TPM的芯片首先必须具有产生加解密密钥的功能,此外还必须能够进行高速的资料加密和解密,以及充当保护BIOS和操作系统不被修改的辅助处理器。TPM的可信基础来源于可信根,可信根(..._tpm 总线监听

一天什么时间发抖音浏览量高?5个抖音最佳发布时间段_几点发抖音浏览量最高-程序员宅基地

文章浏览阅读6.7w次。也就更容易获得更高的浏览量。,我们称为午高峰,这个时间段主要是针对一二线城市的上班族,因为玩抖音的一二线城市的人比较多,所以这个时间段他们基本都是下班的时间段,刷抖音的人也很多。,我们成为晚高峰,这个时间段的人基本都忙完工作在休息了,这个时间段可以说是一天中抖音流量最高的时间段,是高峰中的高峰。,这一个时间段的人大都是刚刚睡醒,躺在床上刷一刷抖音,或者在上班的路上没事看看抖音,坐公交的路上刷着抖音。,我们称之为午高峰,这个时间段是人们的午休时间,这个时间段刷抖音的人也很多,吃完饭午休,拿着手机刷刷抖音。_几点发抖音浏览量最高

图数据可视化——R语言ggplot2包和tidybayes包绘制小提琴图进阶_分半小提琴图-程序员宅基地

文章浏览阅读6.1k次,点赞7次,收藏41次。图数据可视化_R语言ggplot2包和tidybayes包绘制小提琴图进阶概述:绘制小提琴图时按数据分布的密度填充不同透明度的颜色(渐变填充)。使用工具:R语言中的ggplot2和tidybayes工具包本文使用的数据及计算方式与之前的博文一致:数据可视化——R语言ggplot2包绘制精美的小提琴图(并箱线图或误差条图组合)。本文采用tidybayes包中stat_eye()绘制小提琴图,通过设置aes(alpha = stat(f)可实现渐变填充。由于stat_eye()会默认采用中位数及分位数作_分半小提琴图

江苏省专转本计算机专业大类《计算机基础理论 1.2(二)小节习题答案》_计算机硬件系统是执行软件程序的物质基础,其中能执行程序指令的是( )-程序员宅基地

文章浏览阅读1.4k次。江苏省专转本计算机_计算机硬件系统是执行软件程序的物质基础,其中能执行程序指令的是( )

推荐文章

热门文章

相关标签