Unity四元素运用之风向标跟随箭头
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WindVaneCom : MonoBehaviour
{
public static WindVaneCom instance
{
get;
private set;
}
public bool isOn = false;
public Camera cam;
public GameObject T;
public GameObject V;
public float PivotXY = 75f;
public float scoX = 220f;
public float scoY = 270f;
private float AtX;
private float AtY;
private Vector2 v2 = Vector2.one;
private Vector2 v2new = Vector2.one;
private Vector3 v3 = Vector3.one;
private Quaternion qua = Quaternion.identity;
void Awake()
{
instance = this;
}
public void SetGameobj(Camera ca, GameObject v, GameObject t)
{
cam = ca;
T = t;
V = v;
}
// Update is called once per frame
void Update()
{
if (isOn)
{
ObjectCom com = CreatureModel.Instance.GetCurrentObjCom();
if (com != null)
{
T = com.gameObject;
}
if (V == null || T == null)
{
Debug.Log("V==null||T==null");
return;
}
if (null != Camera.main)
{
cam = Camera.main;
v2 = cam.WorldToScreenPoint(T.transform.position);
}
else
{
Debug.Log("null == Camera.main");
// cam = Camera.current;
}
if ((v2.x >= (0 - scoX) && v2.x <= (Screen.width + scoX)) && (v2.y >= (0 - scoY) && v2.y <= (Screen.height + scoY)))
{
V.SetActive(false);
}
else
{
V.SetActive(true);
}
if (v2.x < -scoX)
{
AtX = PivotXY;
if (v2.y > 0 && v2.y < Screen.height)
{
AtY = v2.y;
V.SetActive(true);
}
}
if (v2.x > (Screen.width + scoX))
{
AtX = Screen.width - PivotXY;
if (v2.y > 0 && v2.y < Screen.height)
{
AtY = v2.y;
V.SetActive(true);
}
}
if (v2.y < -scoY)
{
AtY = PivotXY;
if (v2.x > 0 && v2.x < Screen.width)
{
AtX = v2.x;
V.SetActive(true);
}
}
if (v2.y > (Screen.height + scoY))
{
AtY = Screen.height - PivotXY;
if (v2.x > 0 && v2.x < Screen.width)
{
AtX = v2.x;
V.SetActive(true);
}
}
v2new.x = AtX;
v2new.y = AtY;
V.GetComponent<RectTransform>().anchoredPosition = v2new;
qua.SetLookRotation(V.transform.position, T.transform.position);
v3 = qua.eulerAngles;
// V.transform.rotation = Quaternion.Euler(0, 0, v3.z);
V.transform.rotation = Quaternion.Euler(v3.x, 0, v3.z);
}
else
{
if (V != null)
V.SetActive(false);
}
}
void OnDestory()
{
instance = null;
}
}
Unity四元素运用之风向标跟随箭头的更多相关文章
- Unity3D学习笔记(八):四元素和书籍推荐
书籍推荐: 3D数学基础:图形与游戏开发——游戏软件开发专家系列(美)邓恩 Unity Shader入门精要 冯乐乐(92年) 数据结构(Python语言描述) 数据结构.算法与应用(C++语言描述) ...
- [原][数学][C++][osg]空间向量OA到转到空间向量OB、以及四元素Q1转到Q2的函数
注意:Oa其实在OK的延长线上,上图只是为了好看才把Oa和OK分开了 算法需求如图所示: 已知空间向量OA和空间向量OB 我想算出OA向OB按某角度或者某时间移动 变成空间向量Oa的算法 先说废话:我 ...
- Unity的四元素与Vector3的乘积的含义
Quaternion.Euler(x,y,z)含义是按照每个旋转轴以x,y,z旋转度旋转,例子:Quaternion.Euler(45,45,45) Quaternion与Vector3的右乘操作(* ...
- Unity四种路径总结
四种路径的权限: Application.dataPath 包含游戏数据文件夹的路径(只读) Applicatio ...
- Unity3D学习笔记(七):叉乘和四元素
向量的叉乘: 数学运算:a(ax,ay,az) x b(bx,by,bz) = c(aybz-azby,azbx-axby,axby-aybx) 几何意义:得到一个新的向量,同时垂直于a向量和b向量, ...
- unity 常用的几种相机跟随
固定相机跟随 这种相机有一个参考对象,它会保持与该参考对象固定的位置,跟随改参考对象发生移动 using UnityEngine; using System.Collections; public c ...
- Unity学习-元素类型(三)
在看下面操作时,先记住三句话 1.游戏对象 是由 组件 组成的:衣服 2.材质(Material):就是衣服的设计方案 3.纹理(Texture):做衣服的布料 从GameObject到Cube 第一 ...
- Unity 3D里相机的平滑跟随(转)
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 public class ...
- web自动化之selenium(四)元素等待
隐式等待 说明 隐式等待是通过设置一定时长的等待,让页面上的某些元素能过加载出来,如果超过了设置的时间还没有加载出来则抛出(NoSuchelementException异常),默认单位为"秒 ...
随机推荐
- Working Experience - WPF 中 DataGrid 控件的应用
问题: 添加控件后, 编辑单元格会出现异常 绑定 ItemsSource 属性后, 更新绑定对象的数据, UI 不刷新 如何显示控件中 ComboBox 类型 解决方法: 绑定 ItemsSource ...
- 成为高手前必懂的TCP干货
目录 一.起源 二.TCP 协议 TCP 的特点? 怎么理解全双工? TCP 的数据包如何组织? 三.TCP 工作流程 四. 三次握手 五. 四次挥手 小结 我们在平时的开发过程中,或多或少都会涉猎到 ...
- (转)Deep Learning深度学习相关入门文章汇摘
from:http://farmingyard.diandian.com/post/2013-04-07/40049536511 来源:十一城 http://elevencitys.com/?p=18 ...
- unity 代码添加AnimationEvent
经过测试只要Animator跟继承monoBehaviour的类A在同一个节点上,就可以注册类A中的public 方法,含0或1个参数(int,float,object,string),注意:只能是0 ...
- Solr 6.7学习笔记(06)-- spell check
拼写检查也是搜索引擎必备的功能.Solr中提供了SpellCheckComponent 来实现此功能.我看过<Solr In Action>,是基于Solr4.X版本的,那时Suggest ...
- 蓝桥杯T37(nim博弈)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T37 题意:中文题诶- 思路:nim博弈 个人感觉这题最难的地方是将题目转换为博弈模型,如果能将之转换为博弈模 ...
- Jenkins+Git+Docker+K8s部署
准备工作 Jenkins已安装 Docker和K8s部署运行成功 代码管理工具使用Git 最近公司项目使用Jenkins+Git+Docker+K8s进行持续化构建部署,这里笔者整理了一下构建部署的相 ...
- IDEAL基于maven创建spark程序
今天创建spark项目遇到一个奇葩问题,困扰了好久,特此记录一下. 1.按照截图创建spark项目 2.项目创建好后,运行报错: Error:scalac: error while loading J ...
- shell常用正则表达式
转载自: http://www.cnblogs.com/linhaifeng/p/6596660.html 和 http://www.blogjava.net/jasmine214--love/arc ...
- path不相等的子集,父级
SELECT a.path,b.path from comm_department_temp a INNER JOIN comm_department_temp b on a.id=b.parent_ ...