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四元素运用之风向标跟随箭头的更多相关文章

  1. Unity3D学习笔记(八):四元素和书籍推荐

    书籍推荐: 3D数学基础:图形与游戏开发——游戏软件开发专家系列(美)邓恩 Unity Shader入门精要 冯乐乐(92年) 数据结构(Python语言描述) 数据结构.算法与应用(C++语言描述) ...

  2. [原][数学][C++][osg]空间向量OA到转到空间向量OB、以及四元素Q1转到Q2的函数

    注意:Oa其实在OK的延长线上,上图只是为了好看才把Oa和OK分开了 算法需求如图所示: 已知空间向量OA和空间向量OB 我想算出OA向OB按某角度或者某时间移动 变成空间向量Oa的算法 先说废话:我 ...

  3. Unity的四元素与Vector3的乘积的含义

    Quaternion.Euler(x,y,z)含义是按照每个旋转轴以x,y,z旋转度旋转,例子:Quaternion.Euler(45,45,45) Quaternion与Vector3的右乘操作(* ...

  4. Unity四种路径总结

    四种路径的权限:                                            Application.dataPath 包含游戏数据文件夹的路径(只读) Applicatio ...

  5. Unity3D学习笔记(七):叉乘和四元素

    向量的叉乘: 数学运算:a(ax,ay,az) x b(bx,by,bz) = c(aybz-azby,azbx-axby,axby-aybx) 几何意义:得到一个新的向量,同时垂直于a向量和b向量, ...

  6. unity 常用的几种相机跟随

    固定相机跟随 这种相机有一个参考对象,它会保持与该参考对象固定的位置,跟随改参考对象发生移动 using UnityEngine; using System.Collections; public c ...

  7. Unity学习-元素类型(三)

    在看下面操作时,先记住三句话 1.游戏对象 是由 组件 组成的:衣服 2.材质(Material):就是衣服的设计方案 3.纹理(Texture):做衣服的布料 从GameObject到Cube 第一 ...

  8. Unity 3D里相机的平滑跟随(转)

    1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 public class ...

  9. web自动化之selenium(四)元素等待

    隐式等待 说明 隐式等待是通过设置一定时长的等待,让页面上的某些元素能过加载出来,如果超过了设置的时间还没有加载出来则抛出(NoSuchelementException异常),默认单位为"秒 ...

随机推荐

  1. Elasticsearch之match_phrase小坑记录

    1.问题抛出 某个词组在Elasitcsearch中的某个document中存在,就一定通过某种匹配方式把它搜出来. 举例: title=公路局正在治理解放大道路面积水问题. 输入关键词:道路,能否搜 ...

  2. 【机器学习】迭代决策树GBRT(渐进梯度回归树)

    一.决策树模型组合 单决策树C4.5由于功能太简单,并且非常容易出现过拟合的现象,于是引申出了许多变种决策树,就是将单决策树进行模型组合,形成多决策树,比较典型的就是迭代决策树GBRT和随机森林RF. ...

  3. web API请求与参数获取

    总结webAPI的常用请求方法与后台参数的获取: 一:get请求:(会将所以参数拼接到URL里面) 1:基础类型:string  a=“hello” , 前端无论你是写到ajax里面的data属性还是 ...

  4. Thinkpad 拆光驱更换光驱硬盘支架、拆光驱面板 T400 T440

    拆光驱.硬盘装支架的环节就不多说了.主要说下拆光驱面板. 先拿细物(区别针.回形针),捅这个洞,就能把光驱仓打开弹出来后,反过来,这里有个卡扣放大看,按住这卡扣,然后往外掰,把面板掰出来 掰出来的面板 ...

  5. js函数定义参数个数和实际传入参数的对比

    因为js是一种弱类型的编程语言,对数据类型的要求没有其他编程语言的要求严格,所以在定义函数的时候不需要像java和C#一样对其传入参数的类型进行定义.那么传入参数的个数有没有影响呢?今天小猪就做了个实 ...

  6. JQuery EasyUI validate 扩展

    validate 扩展js $.extend($.fn.validatebox.defaults.rules, { equals: { validator: function(value,param) ...

  7. [poj百练]2754:八皇后 回溯

    描述 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题. 对于某个满足要求的8皇后 ...

  8. 洛谷P1447 [NOI2010]能量采集(容斥)

    传送门 很明显题目要求的东西可以写成$\sum_{i=1}^{n}\sum_{j=1}^m gcd(i,j)*2-1$(一点都不明显) 如果直接枚举肯定爆炸 那么我们设$f[i]$表示存在公因数$i$ ...

  9. QCTF 2018线上赛 writeup

    本次算是被QCTF打趴了,本来做题时间就少(公司无限开会,开了一天,伪借口),加上难度和脑洞的增大,导致这次QCTF又酱油了...就连最基本的签到题都没做出来...这就很气 好了,以下是解题思路 MI ...

  10. Codeforces #564div2 C(模拟)

    要点 没想到的一点是,对于堆里的某牌,最好情况是它出来时后边都准备就绪了,答案是\(p[i] + (n - i + 1)\),所有的这个取最大的即可 一发结束的情况先特判一下 const int ma ...