3d单机躲避类障碍物360度旋转

求一款沿着管道上躲避障碍物,屏幕左右点击旋转的手机游戏,是一个球,考验反应? - 知乎4被浏览8739分享邀请回答0添加评论分享收藏感谢收起支持订阅获取新灵感
jQuery已经不需要再多做介绍了。在WEB世界jQuery已经是使用最为广泛的技术。在很多时候可以帮助你创建很多伟大的事情。此外,丰富的jQuery插件可以让我们在互联网上不再过多的消耗在代码的编写上,能够毫不费力的创建幻灯片,表格,动画和其他各种优秀的效果。下面我们分享出的是360度图像旋转效果。就是利用jQuery插件!所以,千万不要错过这个尝试和测试的机会。这些插件可以帮助你的网站更好的展示物品。
AJAX-ZOOM是一个独特的工具,在网络上呈现360°产品图片。用户可以旋转VR 360的对象,也对Z-轴(3D多行)。此外深度缩放在每一帧(精灵包含了一组相同的对象的单个图像)。采用图像块技术(图像金字塔)允许使用无压缩的高解析度影像。
卷1.2是一个既定的jQuery插件,这需要一个普通的图像标签,并把它转换成一个华丽的360°对象的电影,全景或停格动画。
Dopeless旋转360度的产品可视化的jQuery插件。
这个惊人的和有用的jQuery插件可以让你通过点击和移动鼠标旋转图像。
Spritespin是一个jQuery插件,在您的网站,使精灵动画。它带有一个数组的的图像或stiched的精灵表,能够播放这些图像一帧一帧。这将导致在一个动画。这个插件的目的是提供一个360度的视角对某种产品。有没有闪光灯需要。一切都是用JavaScript和jQuery框架。
您可以旋转图像,通过点击,mousemoving或将其设置为使用此插件,在自动旋转。
图像多维数据集功能可以很容易地添加到适当的默认设置部门。然后它会显示目标的部门在一个周期内每两秒钟内包含的图像。选择随机轮换,每次移动到下一个图像。高亮和阴影用于增强的3D效果。
J360是一个jQuery插件,显示360产品使用一组图片。
显示360°视角的全景图像或一个序列。这是简单,重量轻,无频闪需要,没有多余的CSS需要,快速,兼容所有主流浏览器和触摸设备。它已经过测试,在Android浏览器6,7,8,9,iPad的浏览器,IE,火狐,Chrome,Safari和Opera。
Flip是一个jQuery插件,将翻转很容易地在四个方向的元素。
标签:, , , , ,虽然unity3d有自带的navigation避开障碍物,但有一次做项目时发现:当场景大而且人物变多时这个navigation计算不是很灵敏,于是心想能否自己想出另外一个检测障碍物并避开的方法。话不多说,上代码:
using UnityE
using System.C
public class ObstacleDetection : MonoBehaviour {
public float MoveSpeed = 2;
//避开时的移动速度
public float ColliderDistance = 2;
//检测距离
public string[] ObstacleT
//障碍物的标签,就是要避开的障碍物
public &bool IsObstacle{get{return _IsO}}
//是否有障碍物,用来给外部的接口
private Vector3
//记录避开障碍物前的的旋转坐标
private bool IsForward =
//前方是否有障碍物
private bool IsInLeft &=
//左方是否有障碍物
private bool IsInRight =
//右方是否有障碍物
private bool _IsObstacle =
//是否有障碍物
private float timer = 0;
//避开障碍物后返回原先状态的缓冲计时
private Transform m_
// Use this for initialization
void Start () {
m_transform = this.
// Update is called once per frame
void Update () {
MoveForward ();
Detection();
//当侧面有障碍物而前方没有时向前移动
void MoveForward()
if(_IsObstacle)
if(!IsForward)
pos = m_transform.localEulerA
m_transform.Translate(Vector3.forward*Time.deltaTime*MoveSpeed);
//障碍物检测
#region Detection
void Detection()
IsForward = DirectionForward ();
IsInLeft = DirectionLeft ();
IsInRight = DirectionRight ();
if (IsForward) {
if (IsInLeft && !IsInRight)&
float rotateAnglesY = RotateAngles (pos.y + 90);
m_transform.localEulerAngles = new Vector3 (m_transform.localEulerAngles.x,
&& & & & & & & & & & & & & & & & & & & & & rotateAnglesY,
&& & & & & & & & & & & & & & & & & & & & & m_transform.localEulerAngles.z);
else if (!IsInLeft && IsInRight)&
float rotateAnglesY = RotateAngles (pos.y - 90);
m_transform.localEulerAngles = new Vector3 (m_transform.localEulerAngles.x,
&& & & & & & & & & & & & & & & & & & & & & rotateAnglesY,
&& & & & & & & & & & & & & & & & & & & & & m_transform.localEulerAngles.z);
else if (IsInLeft && IsInRight)&
float rotateAnglesY = RotateAngles (pos.y + 180);
m_transform.localEulerAngles = new Vector3 (m_transform.localEulerAngles.x,
&& & & & & & & & & & & & & & & & & & & & & rotateAnglesY,
&& & & & & & & & & & & & & & & & & & & & & m_transform.localEulerAngles.z);
float rotateAnglesY = RotateAngles (pos.y + Random_1_1 () * 90);
m_transform.localEulerAngles = new Vector3 (m_transform.localEulerAngles.x,
&& & & & & & & & & & & & & & & & & & & & & rotateAnglesY,
&& & & & & & & & & & & & & & & & & & & & & m_transform.localEulerAngles.z);
if(!IsInLeft && !IsInRight)
if(IsObstacle)
//避开障碍物到返回原先状态的缓冲时间
timer += Time.deltaT
if(timer & 0.8f)
timer = 0;
_IsObstacle =
//检测前方
bool DirectionForward()
bool check =
RaycastHit hitF
Vector3 LocalForward = m_transform.TransformPoint(Vector3.forward)-m_transform.
if (Physics.Raycast (m_transform.position,&
&& & & & & & & & & & LocalForward,&
&& & & & & & & & & & out hitForward, ColliderDistance/2))
if(CompareTags(hitForward.transform.gameObject.tag))
_IsObstacle =
//检测右方
bool DirectionRight()
bool check =
RaycastHit hitR
Vector3 LocalRight = m_transform.TransformPoint(Vector3.right)-m_transform.
if (Physics.Raycast (m_transform.position,&
&& & & & & & & & & & LocalRight,&
&& & & & & & & & & & out hitRight, ColliderDistance))&
if(CompareTags(hitRight.transform.gameObject.tag))
_IsObstacle =
//检测左方
bool DirectionLeft()
bool check =
RaycastHit hitL
Vector3 LocalLeft = m_transform.TransformPoint(-Vector3.right)-m_transform.
if (Physics.Raycast (m_transform.position,&
&& & & & & & & & & & LocalLeft,&
&& & & & & & & & & & out hitLeft, ColliderDistance))&
if(CompareTags(hitLeft.transform.gameObject.tag))
_IsObstacle =
#endregion
//自己写的一些小功能
#region MyFunction
//遍历ObstacleTags数组,是否与其中的一个值相符
bool CompareTags(string name)
bool isSame =
for(int i = 0; i & &ObstacleTags.Li++)
if(ObstacleTags[i].Equals(name))
return isS
//将角度规范,变为0~360之间
float RotateAngles(float Angles)
float angles = 0;
if (Angles &= 0) {
angles = Angles - ((int)(Angles / 360)) * 360;
angles = (((int)(Angles / 360))+1) * 360 - A
//产生-1~1的随机数,不包括0
float Random_1_1()
float index = Random.Range (-1,1);
if(index == 0)
index = Random_1_1();
#endregion
void OnDrawGizmos()
Gizmos.color = Color.
Gizmos.DrawLine (transform.position, transform.TransformPoint(Vector3.forward*ColliderDistance/2));
Gizmos.DrawLine (transform.position, transform.TransformPoint(Vector3.right*ColliderDistance));
Gizmos.DrawLine (transform.position, transform.TransformPoint(Vector3.left*ColliderDistance));
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7718次
排名:千里之外
(3)(1)(2)(1)}

我要回帖

更多关于 3d旋转躲障碍的游戏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信