一、创建一个Apple00,拖拽Prfabs下的Sprite命名为Apple00,添加碰撞器Box Collider,编写代码Knife Rey1.js

二、做被切的苹果

步骤和一是一样的,但是被切的水果需要有重力,添加了一个刚体RigidBody,注意:位置Z轴不需要移动,旋转:x、y不需要旋转

三、代码

  遇到一个很奇葩的问题“js调用出现问题” 找了半天也没发现什么问题啊!原来在js中头部有个““#pragma strict”  需要把这个去掉即可!

#pragma strict
//var myColor:Color;
private var firstPosition:Vector3;//鼠标点击的第一个点
private var secondPosition:Vector3;//鼠标放开的位置
var middlePosition:Vector3;
private var isClick:boolean=false; var myRay:GameObject;
private var rayGameObject:GameObject; //private var lineRenderer:LineRenderer; //function Start () {
// lineRenderer=gameObject.AddComponent(LineRenderer);
// lineRenderer.material.color=myColor;
// lineRenderer.SetWidth(0.1,0.1);//设置宽度 起点宽度和终点宽度 function SetWidth (start : float, end : float) : void
//} //begin 3
var knifeSound:AudioClip;//切水果声音
var isHit:boolean=false;//判断是否被切
var rayPosition:Vector3;//切水果的坐标
var isRay:boolean=false;//是不是射线
var firstFruit:GameObject;//被切的苹果
var secondFruit:GameObject;//被切两半
private var myFirstFruit:GameObject;//实例化被切的苹果
private var mySecondFruit:GameObject;//实例化被切两半
private var angle:float;//角度
//end
function Update () {
var isMouseDown=Input.GetMouseButton(0);//获取按钮
if(isHit){
if(isMouseDown&&!isClick)
{
//获取鼠标按下的第一个位置
firstPosition=Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,1));
isClick=true;
}
else if(isMouseDown)
{
secondPosition=Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,1));
}
else if(Input.GetMouseButtonUp(0))//鼠标提起
{
isRay=true;//被切到
secondPosition=Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,1));
if(secondPosition.x!=firstPosition.x)
{
angle=(1.0/3.14)*180*Mathf.Atan((secondPosition.y-firstPosition.y)/(secondPosition.x-firstPosition.x));
//Mathf.Atan((secondPosition.y-firstPosition.y)/(secondPosition.x-firstPosition.x));
}
else
{
angle=0;
}
//创建划痕,这里旋转的是幅度
//rayGameObject=Instantiate(myRay,rayPosition,Quaternion.AngleAxis(angle*180/Mathf.PI,Vector3.forward));
rayGameObject=Instantiate(myRay,rayPosition,Quaternion.AngleAxis(angle*180/3.14,Vector3.forward));
//生成两个被切的水果
myFirstFruit=Instantiate(firstFruit,transform.position,Quaternion.AngleAxis(Random.Range(50,180)*100/3.14,Vector3.forward));
mySecondFruit=Instantiate(secondFruit,transform.position,Quaternion.AngleAxis(Random.Range(80,150)*100/3.14,Vector3.forward));
if(Random.Range(1,10)>5.0)//左边、右边 是随机出现的,其实正确的应该是计算切线的角度来计算苹果切开两半的一个飞溅的方向
{
myFirstFruit.rigidbody.velocity=new Vector2(5,10);
mySecondFruit.rigidbody.velocity=new Vector2(-8,-10);
}
else
{
myFirstFruit.rigidbody.velocity=new Vector2(-5,-10);
mySecondFruit.rigidbody.velocity=new Vector2(8,10);
}
Physics.gravity=Vector3(0,-20,0);//重力加速度大些
Destroy(myFirstFruit,2.0);
Destroy(mySecondFruit,2.0);
if(audio.isPlaying)
{
audio.Stop();
}
else
{
PlaySound(knifeSound);
}
Destroy(rayGameObject,0.2);//切的划痕释放刀光 isClick=false;
isHit=false;
Destroy(rayGameObject,1.0);//一秒钟就去掉
}
}
else
{
isRay=false;
}
}
//在指定位置播放剪辑
function PlaySound(soundName)
{
if(!audio.isPlaying)
{
AudioSource.PlayClipAtPoint(soundName,Vector3(0,0,-10));
}
}
private var isClick:boolean=false;

function Update () {
var isMouseDown:boolean=Input.GetMouseButton(0);
if(!isClick){
if(isMouseDown){
var ray:Ray=Camera.main.ScreenPointToRay(Input.mousePosition);
var hit:RaycastHit;
if(collider.Raycast(ray,hit,100.0)){//Collider.Raycast 光线投射 function Raycast (ray : Ray, out hitInfo : RaycastHit, distance : float) : bool
transform.GetComponent("knifeRey1").isHit=true;
transform.GetComponent("knifeRey1").rayPosition=hit.transform.position;
}
}
}
}

四、效果

他娘的,还没搞好,看下面

Unity3D笔记 切水果三 切水果的更多相关文章

  1. 【Git 使用笔记】第三部分:多分支开发

    ###举例仓库 仓库地址A:git@gitlab.54php.cn:guowei/demos.git 仓库地址B:git@gitlab.54php.cn:infra/demos.git 开发人员仓库C ...

  2. codevs3304 水果姐逛水果街

    题目描述 Description 水果姐今天心情不错,来到了水果街. 水果街有n家水果店,呈直线结构,编号为1~n,每家店能买水果也能卖水果,并且同一家店卖与买的价格一样. 学过oi的水果姐迅速发现了 ...

  3. 水果姐逛水果街Ⅱ codevs 3305

    3305 水果姐逛水果街Ⅱ  时间限制: 2 s  空间限制: 256000 KB   题目描述 Description 水果姐第二天心情也很不错,又来逛水果街. 突然,cgh又出现了.cgh施展了魔 ...

  4. 水果姐逛水果街Ⅰ(codevs 3304)

    题目描述 Description 水果姐今天心情不错,来到了水果街. 水果街有n家水果店,呈直线结构,编号为1~n,每家店能买水果也能卖水果,并且同一家店卖与买的价格一样. 学过oi的水果姐迅速发现了 ...

  5. 【Unity Shaders】学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert

    [Unity Shaders]学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert 转载请注明出处:http://www.cnblogs.com/-867259 ...

  6. Codevs 3304 水果姐逛水果街Ⅰ 线段树

    题目: http://codevs.cn/problem/3304/   时间限制: 2 s   空间限制: 256000 KB   题目等级 : 钻石 Diamond 题解       题目描述 D ...

  7. Unity3d中如何混用三种脚本语言?

    首先要明白,这三种说的混用是指文件级别的混用,就是说一个文件是由一种语言写的.而不是说你这一个文件可以混用这三种语言,注意这是不允许的. 第二要明白,在unity3d中为什么可以使用三种语言混合开发? ...

  8. Deep Learning论文笔记之(三)单层非监督学习网络分析

    Deep Learning论文笔记之(三)单层非监督学习网络分析 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感 ...

  9. codevs3304 水果姐逛水果街Ⅰ

    题目描述 Description 水果姐今天心情不错,来到了水果街. 水果街有n家水果店,呈直线结构,编号为1~n,每家店能买水果也能卖水果,并且同一家店卖与买的价格一样. 学过oi的水果姐迅速发现了 ...

随机推荐

  1. 【VirtualBox】共享文件夹失效问题

    fix: sudo ln -f -s /opt/VBoxGuestAdditions-5.1.20/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vb ...

  2. php解析mpp文件中的多级任务

    获取层级的project任务  参考 启动javabridge java -jar JavaBridge.jar SERVLET_LOCAL:8089 1.读取mpp文件 $file_path = & ...

  3. BarTender复合条形码中的分隔符模式详解

    在BarTender 10.1中,支持使用BarTender分隔符模式的复合条形码符号体系包括GS1 Composite和GS1 DataBar (RSS).本文小编给大家详细讲解BarTender分 ...

  4. 对转换公式为LaTeX代码要注意什么

    mathtype是一款专业的数学公式编辑工具,理科生专用的工具.mathtype公式编辑器能够帮助用户在各种文档中插入复杂的数学公式和符号.可以轻松的将数学公式转换成LaTex代码,但是转换LaTeX ...

  5. springmvc+freemarker生成静态html文件

    参考资料: http://mylfd.iteye.com/blog/1896501 http://www.cnblogs.com/xxt19970908/p/5553045.html 个人实践: 1. ...

  6. mysql中json_replace函数的使用?通过json_replace对json对象的值进行替换

    需求描述: 在看mysql中关于json的内容,通过json_replace函数可以实现对json值的替换, 在此记录下. 操作过程: 1.查看带有json数据类型的表 mysql> selec ...

  7. [Arch] 01. Before Design Patterns - UML

    From: 史上最全设计模式导学目录 设计模式,这是软件设计过程中的一个环节. 在这个环节之上,需要overview的事业,就是UML,一种通用的建模语言. Ref: 软件设计之UML—UML的构成[ ...

  8. hdu 2348 Turn the corner(三分&&几何)(中等)

    Turn the corner Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  9. vuejs中使用echart图表

    首先安装echart npm i echarts -S 加下来以使用这个图表为例 在vue组件中像这样使用: <template> <div :class="classNa ...

  10. 重命名和重定向RF执行生成的output文件

    命令: pybot -d output文件保存路径 -o output文件重命名 -d --outputdir dir Where to create output files. The defaul ...