unity3d 敌人锥形视角实现的想法

特别想实现像盟军敢死队那样的锥形视角效果

没事想一想,想到几个蠢方法,各位如果有好的方法,欢迎告诉我

1.Raycast方法

从人物位置向前透射射线,再Debug.DrawLine

但只能画出射线,没有锥面效果

        if (Physics.Raycast(transform.position, rayDirection, out hit, ViewDistance))
        {

            //Check the aspect
            if (hit.collider.name != "player")
            {
                Debug.DrawLine(transform.position, hit.point, Color.green);
            }
        }
        else
        {
            Debug.DrawLine(transform.position, leftRayPoint, Color.green);
        }

Debug.DrawLine要在OnDrawGizmos()事件中实现

2.Spotlight方法

最简单方法,Spotlight聚光灯置于水平,放在地面上方,想投射的东西如地面,就新建layer设成Spotlight culling mask中开启,避免不必要的光照

3.投影法

最作弊的方法,在人物上方放一个锥形object,博主在此偷懒,用的plane,放在相机看不到的地方(无限调高),在新加一个方向光,垂直方向,layer设置同上,想改变阴影颜色可以自己写shader。。

各位有更好的方法可以告诉我

-----  by wolf96   http://blog.csdn.net/wolf96

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-30 02:37:02

unity3d 敌人锥形视角实现的想法的相关文章

Unity3D 敌人AI 和 动画( Animator )系统的实例讲解

在这个实例中,我们要做一些敌人AI的简单实现,其中自动跟随和动画是重点,我们要达到的目标如下: 1.敌人能够自动跟随主角 2.敌人模型一共有四个动作:Idle(空闲) Run(奔跑) Attack(攻击) Death(死亡). 3.要求敌人在合适的时机能够做出合适动作 (一)自动跟随的实现 1)首先,新建一个场景  如图,场景里至少有两个角色:  有一个敌人(刀骷髅兵) 还有一个主角(没错,就是那个胶囊体) 2)先选择场景模型,然后在 Inspector 窗口选项 Static旁边的小三角显示出

unity3d 第三人称视角的人物移动以及相机控制

何谓第三人称?就像这样: 用wasd控制人物移动,同时保持在相机的中心.用鼠标右键与滚轮控制相机的角度和距离. 先说一下人物的移动: 首先给作为主角的单位加上 Charactor Controller组件,并调整胶囊型的碰撞体刚好包裹住主角(有其是脚底,除非你想看到你的主角能遁地,或飞行) 然后给你的人物加上控制的脚本~ using UnityEngine; using System.Collections; public class move_controll : MonoBehaviour

OpenGL一些函数详解(二)

OpenGL ES顶点数据绘制技巧 在OpenGL中,绘制一个长方体,需要将每个顶点的坐标放在一个数组中.保存坐标时有一些技巧(由于字母下标不好表示,因此将下标表示为单引号,如A1将在后文中表示为A' ): (1)将对立面坐标保存在相邻的位置,如坐标的保存顺序为:前面(A'ABB'),后面(D'DCC'),上面(D'A'B'C'),下面(DABC),左面(D'A'AD),右面(C'B'BC).因为对立面的坐标除了其垂直的那根轴的坐标相反以外,其他坐标值一样:如前面和后面(垂直于z轴),x和y的坐

Unity3D游戏开发之自由视角状态下的角色控制(二)

在测试Unity3D游戏开发之自由视角状态下的角色控制这个项目的时候意外地发现了一个Bug.Bug出现在如下位置: [csharp] view plaincopyprint? //设置玩家跟随角度 if(Target.GetComponent<NoLockiVew_Player>().State==NoLockiVew_Player.PlayerState.Walk) { Target.rotation=Quaternion.Euler(new Vector3(0,mX,0)); } 该方法主

[Unity3D]Unity3D游戏开发之自由视角下的角色控制

在开始今天的内容前,首先让我们来学习下Unity3D中较为重要的一部分知识,理解这些知识是我们开始学习今天内容的基础. 1.Input.GetAxis():该方法用于在Unity3D中根据坐标轴名称返回虚拟坐标系中的值,通常情况下,使用控制器和键盘输入时此值范围在-1到1之间.这段话怎么理解呢?我们来看下面这段脚本: [csharp] view plaincopyprint? using UnityEngine; using System.Collections; public class ex

Unity3D ARPG游戏开发《最初的幻想》之强化敌人AI,折腾的GUI

 昨天搞了死亡的完善与提示栏的工作.今天的话,首先再升级一下敌人的Ai吧.毕竟在玩家在敌人身后使劲攻击的话,这敌人也都不会有反应的,太不合理了. 打开Enemy脚本,在最前面"变量"标签中,先定义一个计数器,因为必须考虑到被同类"误伤"的情况: private int m_attackMeCount=0;//被一个同类对象攻击的次数 然后再在最下面的WaitForAttack函数中将自己的对象传入自己的攻击对象,以作判断: m_damageTarget.m_ch

Unity3D游戏开发之自由视角状态下的角色控制

在上一篇文章Unity3D游戏开发之基于Trigger的触发式动画设计一文中,博主与大家分享自己在这方面方面的一些感悟.今天呢,我们来探讨Unity3D角色控制的内容,如图是博主非常喜欢的<古剑奇谭>游戏截图,在这款游戏中就使用了博主今天要讲解的自由视角,所谓自由视角是指玩家可以按照自身坐标系向着四个不同的方向移动,当玩家按下鼠标右键时,可以绕Y轴按照一定的角度旋转摄像机,在旋转的过程中,角色将旋转相应的角度.在移动的过程中,摄像机会保持与玩家间的一定距离,然后跟随角色进行移动.好了,下面我们

【Unity3D】使用鼠标键盘控制Camera视角(即时战略类游戏视角):缩进,拉远,旋转

今天写一个demo,要用到鼠标键盘控制三维视角,因此写了个脚本用于控制. 该脚本可以用于即时战略类游戏的视角,提供了缩进,拉伸,旋转.同时按住鼠标右键不放,移动鼠标可以实现第一人称视角的效果. 1 using UnityEngine; 2 using System.Collections; 3 4 public class CameraController : MonoBehaviour { 5 6 7 public float near = 20.0f; 8 public float far

Unity3D用初中数学方法解决第三人称视角变换

鉴于博主的数学只有初中水平(博主是初中生),又想实现第三人称的摄像机位置角度变换,所以博主搞了个最多用到初三四点共园基础知识的算法,还没实现..先写个思想看看 蛤蛤先上图 好了这就是全部算法的核心思想,我们下期再见 还有几个问题需要解决. 问题一:如果在视角变换中摄像机在地形内部怎么办? 这个很好办,如果摄像机不断与地形产生trigger函数,只要不断减少r就行了.当r过小被物体基本碰撞时,将摄像机置于物体上方.在公式中可以看出除了r其他参数是不变的. 问题二:我们考虑的屏幕是一维的,那如何处理