unity基础命令
获取所挂脚本元素的组件:
rd = GetComponent<Rigidbody>();
获取其他元素的组件:
rd = GameObject.Find("Player").GetComponent<Rigidbody>()
如果查找player下的子游戏物体的transform组件可继续find
Transform trans=GameObject("Player").transform.find(“zPlayer”)
transform.find查找子游戏物体的transform组件。
刚体组件加力效果:
private Rigidbody rd;
rd.AddForce(new Vector3(, , ));
键盘获取:
To read an axis use Input.GetAxis with one of the following default axes: "Horizontal" and "Vertical" are mapped to joystick, A
, W
, S
, D
and the arrow keys. "Mouse X" and "Mouse Y" are mapped to the mouse delta. "Fire1", "Fire2" "Fire3" are mapped to Ctrl
, Alt
, Cmd
keys and three mouse or joystick buttons. New input axes can be added in the Input Manager.
以上为api文档中的相关解释,可以通过unity中edit-project settings中进行相关修改。getaxis获取移动轴,获取按键则是getkeydown,入口参数为要按的keycode,返回值为bool。
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Transform组件:
Transform组件是每一个游戏物体必存在的属性,所以可以通过transform可以直接获取到脚本所在游戏物体的Transform组件,也可以用gameObject的find方法获取到相应组件,也可以定义一个public 的Transform组件字段,然后把相应组件拖入。在此多说一点采用rigidbody.vector和angularVelocity与rigidbody.translate和rotate产生的效果是一样的。
碰撞检测与触发检测:
关于碰撞检测和触发检测的具体定义可以查看api文档,在此只做一下简单说明以及注意事项。碰撞检测为两个物体相撞,会有相撞以后反弹的物理效果,其message void OnCollisionEnter(Collision collision)中入口参数为Collision,表示相撞事件,通过其可以获得与游戏物体相撞的Collider,继而获取其他参数,属性等。当设置为触发器时(即collider的isTriger勾选时)表示此物体不是实体,可以穿越,但是此物体定义了一个范围,当进入此范围时触发消息void OnTriggerEnter(Collider collider),其入口参数即为与游戏物体相撞的物体。
克隆物体:
if(Input.GetKeyDown(keycode))
{
GameObject.Instantiate(gameobject, trans.position, trans.rotation);
}
根据上述基础,贴几段小代码:
自毁:
void Start () {
Destroy(this.gameObject, time); }
打击物体:
void OnTriggerEnter(Collider collider)
{
//实例化特效
Instantiate(shellExplosion, transform.position, transform.rotation);
//炮弹自毁
Destroy(this.gameObject);
//击中物体毁灭
if(collider.gameObject.tag!="ground")
{
Destroy(collider.gameObject);
}
// Destroy(collider.gameObject);
}
子弹发射:
private Transform trans;
//游戏物体子弹
public GameObject shell;
public KeyCode key = KeyCode.Space;
// Use this for initialization
void Start () {
// 子弹初始位置对应的游戏物体
trans = transform.Find("FirePosition");
} // Update is called once per frame
void Update () {
if(Input.GetKeyDown(key))
{
//根据子弹初始位置对应的游戏物体,实例化子弹
GameObject GO= Instantiate(shell, trans.position, trans.rotation) as GameObject;
GO.GetComponent<Rigidbody>().velocity = GO.transform.forward * ;
} }
未完待续。。。。。。。。。。
最新文章
- 初始angular框架(1)
- 从0和1到Python
- 向java全台推送数据等
- Servlet的一些细节问题
- 在Google被封的那些日子裏,我們這樣科學上網
- 【BZOJ】1044: [HAOI2008]木棍分割 二分+区间DP
- 基于嵌入式OS的任务设计-----任务划分
- VS2010环境下使用VB编写串口助手
- VMware Workstation 12 Pro 之安装林耐斯CentOS X64系统
- vue+cordova 构建hybrid app
- SQL实例整理
- letter combinations of a phone number(回溯)
- UOJ22 UR #1外星人(动态规划)
- Android中View的绘制流程(专题讲解)
- js可拖拽的div
- 带你使用JS-SDK自定义微信分享效果
- vue cli3.0 结合echarts3.0和地图的使用方法
- Let&#39;s Chat ZOJ - 3961
- Entity Framework 更新模式之Attach与EntityState.Modified模式的区别
- Android studio DrawerLayout