一、基础知识点

1、坐标、向量等

        if (Input.GetMouseButtonDown())
{
//1、将鼠标坐标 转化为 世界坐标 由于鼠标z轴 可能不存在,故自定义为3
Vector3 targetPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, ));
//2、每个gameObject 均有transform.position位置。
//3、向量 v2-v1 表示 v1指向v2的向量
Vector3 dir = targetPos - Camera.main.transform.position;
//4、添加一个力
this.gameObject.GetComponent<Rigidbody>().AddForce(dir*, ForceMode.Impulse);
}

2、动态创建游戏对象

        //鼠标左键点击
if (Input.GetMouseButtonDown())
{
GameObject goNew = GameObject.CreatePrimitive(PrimitiveType.Cube);
goNew.transform.position = new Vector3(, , );
goNew.AddComponent<Rigidbody>();
goNew.name = "testCube";
go.GetComponent<Renderer>().material.color = Color.red;
}

  创建游戏对象:GameObject.CreatePrimitive(PrimitiveType.Cube)

  添加游戏对象组件:goNew.AddComponent<Rigidbody>();

    Rigidbody、脚本、以及所有Component菜单下的组件

3、销毁对象

GameObject goS = GameObject.Find("testCube");
Destroy(goS, 2);

二、示例-打箱子

1、创建一个新的项目

2、增加地面

3、添加一个C#脚本

自动销毁AutoDestory脚本

public class AutoDestory : MonoBehaviour
{ // Use this for initialization
void Start()
{ } // Update is called once per frame
void Update()
{ }
void OnBecameInvisible()
{
Destroy(this.gameObject);
}
}

初始化Init.cs脚本

public class Init : MonoBehaviour {

    // Use this for initialization
void Start()
{
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
go.transform.position = new Vector3(i, j, -);
if (j % == ) {
go.GetComponent<Renderer>().material.color = Color.red;
}
go.AddComponent<Rigidbody>();
go.AddComponent<AutoDestory>();
}
} } // Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown())
{
GameObject goNew = GameObject.CreatePrimitive(PrimitiveType.Sphere);
goNew.transform.position = Camera.main.transform.position;
goNew.AddComponent<Rigidbody>();
goNew.AddComponent<AutoDestory>(); Vector3 targetPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, ));
goNew.GetComponent<Rigidbody>().AddForce((targetPos - Camera.main.transform.position) * , ForceMode.Impulse);
}
}
}

界面效果

打箱子效果

003-unity3d 物理引擎-示例2 打箱子的更多相关文章

  1. Unity3D游戏开发初探—3.初步了解U3D物理引擎

    一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀 ...

  2. 003-unity3d 物理引擎简介以及示例

    一.概述 物理引擎就是模拟真实世界中物体碰撞.跌落等反应的引擎,通过ballence.愤怒的小鸟等理解.Unity3D的物理引擎使用的是Nvidia的PhysX. 物理引擎是一个计算机程序模拟牛顿力学 ...

  3. [原]Unity3D深入浅出 - 物理引擎之碰撞体(Colliders)

    通常Colliders会与Rigidbody一起使用,没有添加碰撞体的刚体会彼此相互穿过. 常用碰撞体有以下几种: Box Collider:盒子碰撞体,是一个立方体外形的碰撞体,可调整为不同大小的长 ...

  4. Unity3D实践系列09, 物理引擎与碰撞检测

    在Unity3D中,一个物体通常包含一个Collider和一个Rigidbody.Collider是碰撞体,一个物体是Collider,才可以进行碰撞检测.Collider组件中的"Is T ...

  5. Unity3D笔记三 物理引擎

    一.物理引擎 1.物理引擎就是模拟真实世界中物体碰撞.跌落等反应,通过Ballance.愤怒的小鸟来理解什么是物理引擎.Unity的物理引擎使用的是NviDIA的PhysX.2.选中一个游戏对象,主菜 ...

  6. [原]Unity3D深入浅出 - 物理引擎之刚体部件(Rigidbody)

    在虚拟世界中,任何物体都是没有活力的,要想变的真实,Rigidbody是必不可少的组件,下面介绍Rigidbody的各个属性: Mass:质量 Drag:阻力,对象在运动时遇到的空气阻力,0表示没有空 ...

  7. Cocos2d-x3.2 使用物理引擎进行碰撞检测[转]

    通常在游戏简单逻辑判断和模拟真实的物理世界时,我们只需要在定时器中判断游戏中各个精灵的条件是否满足判断条件就可以了.例如,在飞机大战中,判断我方子弹和敌机是否发生碰撞一般在定时器中通过敌机所在位置的矩 ...

  8. Cocos2d-x3.2总结---使用物理引擎进行碰撞检测

    [转自]: http://blog.csdn.net/cbbbc/article/details/38541099 通常在游戏简单逻辑判断和模拟真实的物理世界时,我们只需要在定时器中判断游戏中各个精灵 ...

  9. Cocos2d-x 使用物理引擎进行碰撞检测

    [转自]: http://blog.csdn.net/cbbbc/article/details/38541099 通常在游戏简单逻辑判断和模拟真实的物理世界时,我们只需要在定时器中判断游戏中各个精灵 ...

随机推荐

  1. vue项目兼容es6语法跟IE浏览器

    要安装babel-polyfill和es6-promise.用来兼容ie和es6: 附赠链接下载:https://babeljs.io/docs/en/6.26.3/babel-polyfill:ht ...

  2. MySQL下载~安装教程~这里示例 MySQL 8.0 Command Line Client

    打开 https://www.mysql.com 也可以选择我分享的百度网盘文件 MySQL8.0.16.0 安装包 https://pan.baidu.com/s/1U8DkyJVp9Zvx7Zok ...

  3. 安卓的几种alert对话框

    @Override public void onClick(View v) { switch (v.getId()) { case R.id.d1: AlertDialog.Builder build ...

  4. Nginx进行UDP的负载均衡

    准备工作: 服务器1:192.168.33.102     搭建nginx服务,作为反向代理的中转站 服务器2:192.168.33.103    nginx要反向代理的服务器 一.在服务器1上搭建n ...

  5. MYSQL安装相关知识

    将mysql安装为winsow服务 1.执行命令: mysqld-nt.exe --install (安装到windows的服务) 或者是mysqld -install 2.执行命令: net sta ...

  6. Laravel5学习

    [1]缓存问题 laravel中使用的配置文件,都会放在config目录下面,当变更某个参数的时候,如果发现不生效,可以在命令行下面执行  php artisan config:clear 命令才清除 ...

  7. CSS中filter属性的使用

    filter 属性定义了元素的可视效果 blur 给图像设置高斯模糊."radius"一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起, 所以值越大越模糊. 如果没有设定值 ...

  8. canvas实现圆角、圆框图片

    参考资料: http://www.zhangxinxu.com/study/201406/image-border-radius-canvas.html https://www.jianshu.com ...

  9. Elasticsearch:aggregation介绍

    聚合(aggregation)功能集是整个Elasticsearch产品中最令人兴奋和有益的功能之一,主要是因为它提供了一个非常有吸引力对之前的facets的替代. 在本教程中,我们将解释Elasti ...

  10. 5. ClustrixDB SQL语法

    CustrixDB支持的DML语法 SELECT, DISTINCT, [LEFT | RIGHT | OUTER] JOIN, STRAIGHT_JOIN UNION, HAVING, GROUP ...