一、基础知识点

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. Android多渠道打包且根据不同产品打包不同的assets资源目录

    因为项目中存在多种环境,既要区分bebug与release版本,release又要区分测试环境与生产上线环境,每次打包都得浪费不少的等待时间:并且哪个版本有问题还得去切换环境一个个打包,关键是还得牢记 ...

  2. Linux设置静态IP后出现的几种问题

    一.设置静态IP后无法重启网卡 如下图所示 原因分析:control process exited with error code.控制进程存在错误代码. 解决方案:可以检查网卡配置文件是否修改错误. ...

  3. Uber回馈开源的一些软件

    AresDB AresDB 是 Uber 开源的一个基于 GPU 运算的实时分析存储引擎和查询引擎.具备低查询延迟.高数据刷新率和高效内存和磁盘存储管理.AresDB 要求 CUDA Toolkit ...

  4. UVa 10047 自行车 状态记录广搜

    每个格子(x,y,drection,color) #include<iostream> #include<cstdio> #include<cstring> #in ...

  5. Tronado【第2篇】:tronado自定义Form组件

    Tronado自定义Form组件 一.获取类里面的静态属性以及动态属性的方法 方式一: # ===========方式一================ class Foo(object): user ...

  6. Python开发WebService--使用soaplib库

    Python开发WebService--使用soaplib库   使用soaplib开发基于Python语言的WebService主要有以下四个步骤:一.准备环境    S1:下载插件Python.s ...

  7. python 操作符**与*的用法

  8. TypeScript作为前端开发你必须学习的技能(三)

    TypeScript 运算符 TypeScript 主要包含以下几种运算: 算术运算符 逻辑运算符 关系运算符 按位运算符 赋值运算符 三元/条件运算符 字符串运算符 类型运算符 实例看图: 关系运算 ...

  9. 百分号编码(URL编码)

    百分号编码又叫做URL编码,是一种编码机制,只要用于URI(包含URL和URN)编码中. URL中那些字符需要编码,又为什么进行编码 一.URL是什么?  URL(Uniform Resource L ...

  10. BZOJ 5004: 开锁魔法II 期望 + 组合

    Description 题面:www.lydsy.com/JudgeOnline/upload/task.pdf Input Output 一般概率题有两种套路: 满足条件的方案/总方案. 直接求概率 ...