003-unity3d 物理引擎-示例2 打箱子
一、基础知识点
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 打箱子的更多相关文章
- Unity3D游戏开发初探—3.初步了解U3D物理引擎
一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀 ...
- 003-unity3d 物理引擎简介以及示例
一.概述 物理引擎就是模拟真实世界中物体碰撞.跌落等反应的引擎,通过ballence.愤怒的小鸟等理解.Unity3D的物理引擎使用的是Nvidia的PhysX. 物理引擎是一个计算机程序模拟牛顿力学 ...
- [原]Unity3D深入浅出 - 物理引擎之碰撞体(Colliders)
通常Colliders会与Rigidbody一起使用,没有添加碰撞体的刚体会彼此相互穿过. 常用碰撞体有以下几种: Box Collider:盒子碰撞体,是一个立方体外形的碰撞体,可调整为不同大小的长 ...
- Unity3D实践系列09, 物理引擎与碰撞检测
在Unity3D中,一个物体通常包含一个Collider和一个Rigidbody.Collider是碰撞体,一个物体是Collider,才可以进行碰撞检测.Collider组件中的"Is T ...
- Unity3D笔记三 物理引擎
一.物理引擎 1.物理引擎就是模拟真实世界中物体碰撞.跌落等反应,通过Ballance.愤怒的小鸟来理解什么是物理引擎.Unity的物理引擎使用的是NviDIA的PhysX.2.选中一个游戏对象,主菜 ...
- [原]Unity3D深入浅出 - 物理引擎之刚体部件(Rigidbody)
在虚拟世界中,任何物体都是没有活力的,要想变的真实,Rigidbody是必不可少的组件,下面介绍Rigidbody的各个属性: Mass:质量 Drag:阻力,对象在运动时遇到的空气阻力,0表示没有空 ...
- Cocos2d-x3.2 使用物理引擎进行碰撞检测[转]
通常在游戏简单逻辑判断和模拟真实的物理世界时,我们只需要在定时器中判断游戏中各个精灵的条件是否满足判断条件就可以了.例如,在飞机大战中,判断我方子弹和敌机是否发生碰撞一般在定时器中通过敌机所在位置的矩 ...
- Cocos2d-x3.2总结---使用物理引擎进行碰撞检测
[转自]: http://blog.csdn.net/cbbbc/article/details/38541099 通常在游戏简单逻辑判断和模拟真实的物理世界时,我们只需要在定时器中判断游戏中各个精灵 ...
- Cocos2d-x 使用物理引擎进行碰撞检测
[转自]: http://blog.csdn.net/cbbbc/article/details/38541099 通常在游戏简单逻辑判断和模拟真实的物理世界时,我们只需要在定时器中判断游戏中各个精灵 ...
随机推荐
- C# wpf 使用资源文件 resx
随意新建一个wpf应用 在cs代码编辑,增加 using System.Resources; 放在最上 在方案新建文件夹 名 文件 在 文件 新建资源文件 资源.resx 资源.resx 添加字符串 ...
- QWidget 设置背景图片
QWidget 设置背景图片办法: 利用 QPaltette QPixmap pixmap("back.png"); QPalette palette; palette.setBr ...
- PAT Basic 1047 编程团体赛 (20 分)
编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜. 现给定所有队员的比赛成绩,请你编写程序找出冠军队. 输入格式: 输入第一行给出一个正 ...
- Instr()函数用法
返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置. 语法 InStr([start, ]string1, string2[, compare]) InStr 函数的语法具有 ...
- Android开发艺术探索笔记之Activity
内容来源:Android开发艺术探索第一章:Activity的生命周期与启动模式 不能在onPause中做重量级的操作,因为必须执行完成以后新Activity才能Resume.onPause和onSt ...
- Eclipse中配置Python插件
1.点击Window ---> preferences ,左边的标题栏找到Pydev 2. 在Pydev里找到含有Python的选项,点击,在右侧New,弹出框中找到Python的安放目录下的 ...
- 【Linux】CentOS6上mysql5.7安装
1.下载安装yum源 根据系统下载yum源 https://dev.mysql.com/downloads/repo/yum/ rpm -ivh xxxxx.rpm 2.修改yum源 vim /etc ...
- 自己用ul模拟实现下拉多选框,
模拟实现下拉多选框 效果如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- php使用ob缓存来实现动态页面静态化
php7中的php.ini 默认开启 output_buffering = 4096 例子: <?phpinclude_once 'common/common.php';//数据库操作方法 $f ...
- BZOJ 4881: [Lydsy1705月赛]线段游戏 动态规划 + 线段树
Description quailty和tangjz正在玩一个关于线段的游戏.在平面上有n条线段,编号依次为1到n.其中第i条线段的两端点坐 标分别为(0,i)和(1,p_i),其中p_1,p_2,. ...