float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce (new Vector3(h,0,v));
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce (new Vector3(h,0,v));
float h = Input.GetAxis("Horizontal");
rd.AddForce(new Vector3(h,0,0));
用键盘控制指定物理碰撞的向量值
dx OpenGL Unity游戏ying'qing
project
ctrl+d复制
编写代码
1.huo
创建小球及其材质,光滑度调为0
创建新场景MainScene
创建地面
创建地面材质然后拖给地面
UI:
默认不显示的内容,勾选去掉,表示不激活
activeSelf:表示自己是否被激活
SetActive:设置激活
UI结构:
Canvas:画布对应屏幕视口
EventSystem:事件系统
触发检测
自动门:人物进入某个区域的时候就会进行触发检测,没有碰撞效果
触发器实际上就是碰撞器,勾选上isTrigger
触发回调函数:
进入触发区域
OnTriggerEnter(Collider coll)
在触发区域内
OnTriggerStay(Collider coll)
退出触发区域
OnTriggerExit(Collider coll)
区分某类物体:使用标签不容易出错,方便扩展
void OnCollisionEnter(Collision coll)
{
if(coll.gameObject.tag == "Food")
{
Destroy(coll.gameObject)
}
}
coll.gameObject:获取碰撞游戏对象
coll.collider:获取碰撞到的碰撞器
coll.collider.tag:获取碰撞的对象的标签
coll.gameObject.tag:获取碰撞的对象的标签
销毁对象:
Destroy(coll.gameObject)
销毁组件:
Destroy(coll.collider)
碰撞过程中小球会顿一下,是因为在移动到实物的时候会碰撞一下,如何实现没有顿的感觉???
碰撞检测:
当发生碰撞的时候会执行的回调函数;多次碰撞的时候会触发多次;
回调函数:
OnCollisionEnter(Collision coll):碰撞开始发生
OnCollisionExit(Collision coll):碰撞结束
OnCollisionStay(Collision coll):碰撞一直接触,没帧调用
如何区分碰撞的对象:
1、通过对象名称
2、通过对象标签
一般情况下可以通过标签来标记一类对象,多个对象的时候可以通过修改prefabs来修改同一类
game窗口处于焦点状态下才会有具体的执行
1、
using
预制体:
把游戏对象直接拖动到Prefabs下面就可以了
在场景中是实心的蓝色
点击后面的箭头可以直接打开预制体
修改预制体的实例信息后,通过override里面的apply把实例的修改同步到预制体里面
相机跟随:
Update里面实时更新Camera的位置
transform组件里面的position
工程里面设置输出:
edit->progect setting ->InputManager;
有每个轴的设置:
name:名字;在程序里面GetAxis传入的参数
NegativeButton:控制键
灵敏度、等
unity和键盘的交互:
监听键盘:
Input.GetAxis("Horizontal")
Input.GetAxis("Vertical")
获得一个轴;
-1到1;模拟加速减速的过程