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 通常在游戏简单逻辑判断和模拟真实的物理世界时,我们只需要在定时器中判断游戏中各个精灵 ...
随机推荐
- Linux上安装ElasticSearch及遇到的问题
在Linux上安装ElasticSearch 1. 安装前环境准备 安装JDK环境,并配置环境变量,这里可以参考我以前写过的博客 https://www.cnblogs.com/ywb-article ...
- 3、sql 表的连接
摘自: https://blog.csdn.net/holly2008/article/details/25704471 表连接分为:CROSS JOIN.INNERT JOIN.OUTER JOIN ...
- Scala Nothing 从官方DOC翻译
Nothing is - together with scala.Null - at the bottom of Scala's type hierarchy. Scala中的Nothing和Null ...
- ifconfig - 配置网络接口
总览 ifconfig [接口] ifconfig 接口 [aftype] options | address ... 描述 ifconfig 用于配置常驻内核的网络接口.它用于在引导成功时设定网络接 ...
- KVM虚拟化网卡管理
brctl常用命令 查看当前虚拟网桥状态 brctl show 添加一个网桥 addbr 删除一个网桥 delbr 添加网口 addif 删除网口 delif VALN LAN 表示 Local Ar ...
- 007-SaltStack之修改salt-minion id
1. 需求背景 之前使用saltstack添加的主机默认使用了hostname作为salt-minion id,而主机名如果没有做规范和规划,是比较难区分属于什么业务或者机器的.我们需要修改salt- ...
- 将临时全局表中的符合字段导入test数据库中
--表1 开户级别表 insert into test.dbo.crm_m_cust_summary(CUST_CERT_N O,ASSETAMT_GRADE_CD)select cust_no,cu ...
- 签发的用户认证token超时刷新策略
https://segmentfault.com/a/1190000014545422
- R语言-六大数据结构
R语言有六种基本的数据结构(或者说数据类型吧).根据数据的维度和同质/异质可分为5种数据类型,最后再介绍一种特殊的类型“因子”. 同质 异质 1维 原子向量 列表 2维 矩阵 数据框 n维 数组 ...
- Struts 2 实现Action的几种方式_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 Action用于处理用户的请求,因此也被称为业务控制器.每个Action类就是一个工作单元,Struts 2框架负责将用 ...