Unity3D教程游戏开发鼠标路线

来源:互联网 发布:Mac pro 怎么看芒果TV 编辑:程序博客网 时间:2024/05/16 17:35
需求:以教堂十字架为背景,在其上做从上到下,从左到右的画线操作.
解决:由于横竖两个物件的交叉处无法做2次判断(若交叉处判定为垂直物件的,则划横线时无法响应),便将其查分成5块.结合处单独

立方体表示.以垂直方向考虑,为了让其精确判断,将上下两部分再次准确分割,加入两个比较短的判定位置.最上面的短判定位置为路

线记录起始,下面的是中止,在unity3d中,用5个互相穿插的立方体表示.
起始思路(只碰两个):
第一个立方体脚本如下 cubeA.js
// 是否进入立方体内
static var col : boolean = false;

function OnMouseEnter() { col = true; }
function OnMouseExit(){ col = false; }


第二个立方体脚本如下 cubeB.js
function OnMouseEnter(){ if(cubeA.col == true){ 成功 } }

结果发现,就算两个立方体穿插在一起.只要鼠标进入第二个立方体,就是判定离开第一个立方体.所以 cubeA.col 只要在cubeB里必

然是false.

完成思路:
找到了个比较好的数据 
Time.renderedFrameCount  ,已经运行的帧数.
cubeA.js
// 记录鼠标离开时的帧数
static var frm :int = 0;
function OnMouseExit(){ frm = Time.renderedFrameCount; }

cubeB.js
// 是否正常从第一块划过
static var col : boolean = false;
// 记录鼠标离开时的帧数
static var frm :int = 0;

function OnMouseEnter()
{
    //给5帧的机会
    if( (Time.renderedFrameCount - cubeA.frm ) <  5)
    {
       col = true;
    }
 }
function OnMouseExit(){ if( col == true )frm =Time.renderedFrameCount; }


 在unity3d教程第3个物件里这样写
static var col : boolean = false;
function OnMouseEnter()
{
    if(cubeB.col == true && ( Time.renderedFrameCount - cubeB.frm) <  5 ))
    {
       col = true
    }
}
function OnMouseExit(){ if( col == true )frm =Time.renderedFrameCount; }

0 0
原创粉丝点击