unity像素鸟

flyall. / 2023-05-03 / 原文

``# 将物体变为受重力影响的物理对象

  1. 给对象添加组件:2D刚体(Rigidbody2D)
    物体会变成物理物体,有重力,会掉落

让物体能与其他物体互动

  1. 给物体添加碰撞器(Collider2D)
    碰撞器有绿色的轮廓,使用offset可移动轮廓

脚本

本质是让我们自定义自己的组件

Start()

用于在启用此脚本后将立即运行一次。

Update()

启用脚本时,Update将持续运行,会不停运行每一行代码,每一帧,一遍又一遍。

操作对象

gameObject.name="对象名";

让脚本与对象其他组件属性交互

在脚本上做一个特殊的插槽(创建引用)
public Rigidbody2D 参考名;
public 公开 可从脚本外部访问此插槽
将组件拖入插槽
参考名.调用方法

按下空格键

Input.GetKeyDown(KeyCode.Space)==true

物体上升

myRigidbody.velocity=Vector2.up*10;

确保无论帧速率如何,乘法计算出相同的值

transform.position=transform.position+(Vector3.left*moveSpeed)*Time.deltaTime;
Time.deltaTime

创建预制游戏对象(Prefab)

从层次结构中获取父游戏对象并将其拖动到项目中
游戏对象蓝图 可通过预制体创建对象其他版本,包含所有子对象、组件和属性

脚本生成预制体

  1. 引用
    public GameObject pipe;
  2. 拖放入插槽
  3. 内置生成对象
    Instantiate(pipe,transform.position,transform.rotation);
    生成和生成器的位置角度一样的新物体

计时器

public float spawnRate=2;
private float timer=0;

void Update(){
     if(timer<spawnRate){
         timer=timer+Time.deltaTime;
}else{
 Instantiate(pipe,transform.position,transform.rotation);
timer=0;
}
}

位置指定自己的数字时,使用Vector3

销毁不需要的物品,以免占用内存

Destory(gameObject);

ui

  1. 创建text 调整大小
  2. 创建控制逻辑 logic manager
  3. 脚本
    using UnityEngine.UI;
    public Text scoreText;
  4. 将对象拖入插槽
  5. 测试
    [ContextMenu("函数名")]
    放在函数前

不可见的碰撞器 触发器(trigger)

不会造成真正的碰撞,但能让你知道两个对象已经接触

  1. 添加middle
  2. 添加box Collider2D
  3. 勾选istrigger
  4. 脚本
    private void OnTriggerEnter2D(Collider2D collision){}
    任何内容进入碰撞器的第一次都将运行
    由于在预制体中 动画执行才会生成,无法拖入插槽,需要代码控制
    先找到该触发器,创建新的标签
    在start中
    logic=GameObject.FindGameObjectWithTag("Logic").GetComponent<LogicScript>();在层次结构中寻找第一个带有logic标签的游戏对象
    https://www.youtube.com/watch?v=XtQMytORBmM&t=602s