获取所挂脚本元素的组件:

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 * ;
} }

未完待续。。。。。。。。。。

最新文章

  1. 初始angular框架(1)
  2. 从0和1到Python
  3. 向java全台推送数据等
  4. Servlet的一些细节问题
  5. 在Google被封的那些日子裏,我們這樣科學上網
  6. 【BZOJ】1044: [HAOI2008]木棍分割 二分+区间DP
  7. 基于嵌入式OS的任务设计-----任务划分
  8. VS2010环境下使用VB编写串口助手
  9. VMware Workstation 12 Pro 之安装林耐斯CentOS X64系统
  10. vue+cordova 构建hybrid app
  11. SQL实例整理
  12. letter combinations of a phone number(回溯)
  13. UOJ22 UR #1外星人(动态规划)
  14. Android中View的绘制流程(专题讲解)
  15. js可拖拽的div
  16. 带你使用JS-SDK自定义微信分享效果
  17. vue cli3.0 结合echarts3.0和地图的使用方法
  18. Let&#39;s Chat ZOJ - 3961
  19. Entity Framework 更新模式之Attach与EntityState.Modified模式的区别
  20. Android studio DrawerLayout

热门文章

  1. shell脚本一键部署lvs+keepalived
  2. Jupyter Notebook安装和使用详情(你不懂我......)
  3. 【未完成】mysql数据库安全性配置——用户授权
  4. Python基础(十五)
  5. JS 生成唯一值UUID
  6. 夯实Java基础系列14:深入理解Java枚举类
  7. navicat安装及其简单使用
  8. html 试题试卷(包含latex)下载成word - - java
  9. ADB命令无法导出文件到物理机上处理办法
  10. uniapp 与C# 加解密