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异常),默认单位为"秒 ...
随机推荐
- day1 java基础回顾-Junit单元测试
Junit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个类对应一个测试类. 1,测试类与被测试类最好是放到同一个包中(可以是不同的源文件 ...
- 2017年第八届蓝桥杯国赛试题(JavaA组)
1.结果填空 (满分19分)2.结果填空 (满分47分)3.代码填空 (满分21分)4.程序设计(满分35分)5.程序设计(满分79分)6.程序设计(满分99分) 1.标题:图书排列 将编号为1~10 ...
- 检查浏览器是否有此插件如flash
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- cf706C(dp)
题目链接:http://codeforces.com/problemset/problem/706/C 题意:给出n个字符串,反转第 i 个字符串需要花费 ai,问通过反转操作将n个字符串变成升序排列 ...
- codeforces540E-树状数组求逆序对
1-1e9的数据范围 但有1e5个区间 所以可以考虑把没有涉及到的区间缩成一个点 然后树状数组求逆序对 #include<bits/stdc++.h> #define inf 0x3f3f ...
- 我所接触到的JWT
名称:JWT--->Json Web Token 用途:客户端请求服务端API时的认证方式之一 用法: 优点: 体积小(一串字符串),因而传输速度快 支持跨域验证,多应用于单点登录 传输方式多样 ...
- NET Core容器
NET Core容器化之多容器应用部署@Docker-Compose 1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反 ...
- sql-monitore 的bug 。
http://www.mamicode.com/info-detail-1659243.html 存储过程无法做 sql -monitor , 而存储过程跑的sql (只能通过awr 报告来看sql_ ...
- Linux上常用命令整理(一)—— cat
近几个月刚从windows上转过来,开始慢慢熟悉linux,先不撕比到底哪个更好,首先要怀着相互借鉴的精神去了解各个平台. Linux上做开发,除去使用文本编辑器做开发的大神之外,大家(包括我这种菜鸟 ...
- (转)通过MySQL复制线程SQL_Thread加快增量恢复binlog
数据回档常常是使用全量备份+binlog增量实现的.而数据量很大的情况下,增量恢复binlog一直是一个苦恼的问题,因为恢复binlog速度十分慢,并且容易出错. 恢复binlog文件一般有两种方法: ...