目标是:牢记以下137条操作,越级上升到中级阶段
unity-unity2d基础操作笔记(三)
-
- 一百零一、如何操作一个游戏物体由多个部分组成的动画
- 一百零二、如何使用rigidbody 2d进行物体移动
- 一百零三、获取游戏物体身上的组件方法
- 一百零四、代码控制物体朝向
- 一百零五、不使用插件,纯手动跳跃的实现
- 一百零六、如何判断玩家按下了某个键
- 一百零七、如何防止跳的过程中可以左右移动
- 一百零八、实现多方向开枪的思路
- 一百零九、如何保存预制体变动
- 一百一十、如何制作子弹预制体
- 一百一十一、如何从预制体路径上生成子弹
- 一百一十二、如何实现子弹飞行
- 一百一十三、直接在代码里面可以使用标签匹配找到物体
- 一百一十四、欧拉角表示旋转
- 一百一十五、如何获取另外一个脚本的方法
- 一百一十六、如何通过路径加载AudioClip
- 一百一十七、代码中如何控制游戏物体身上的Animator组件是否勾选
- 一百一十八、如何通过界面的方式添加动画事件
- 一百一十九、围绕自身旋转代码实现
- 一百二十、手榴弹遇到物体时的状态设置
- 一百二十一、移动的第四种方法
- 一百二十二、游戏物体旋转的写法
- 一百二十三、如何在c#中实现要等待一秒执行
- 一百二十四、audioSource.playOnAwake=false表示不会开始时自动播放【技巧】
- 一百二十五、如何使用代码找到指定范围内的所有敌人
- 一百二十六、如何计算transform的距离
- 一百二十七、如何实现不使用插件情况下,如何实现镜头跟随游戏物体
- 一百二十八、如何让摄像机不移动,固定在一个位置
- 一百二十九、Text的命名空间:using UnityEngine.UI
- 一百三十、如何通过组件的类型名称获取游戏物体
- 一百三十一、开火点一般都设置成物体的子物体,调整好位置【技巧】
- 一百三十二、如何为空物体设置颜色icon
- 一百三十三、layer的检视面板中,越靠下面就越显示在上面【技巧】
- 一百三十四、物体朝某个方向移动的方法
- 一百三十五、Random.Range(0,101)随机生成0到100的随机数,左边包括,右边不包括
- 一百三十六、使用AddListener方式添加按钮点击事件
- 一百三十七、如何从一个场景跳转到另外一个场景
- 一百三十八、如何从指定时间播放音频
- 一百三十九、如何通过代码实现对游戏事件的监听
- 一百四十、如何切图
- 一百四十一、拖入到游戏场景的物体通常要做的操作
- 一百四十二、如何将拖入场景的低像素游戏物体变得清晰
- 一百四十三、单个图片如何制作成动画
- 一百四十四、同一个anmator的参数可以供多个动画使用
- 一百四十五、更改导入场景物体的大小的方法
- 一百四十六、碰撞和触发物体的表现上的区别
- 一百四十七、2d游戏中,游戏层的划分(是游戏场景的分层和tilemap的分层对应)
- 一百四十八、更改导入场景物体的大小的方法
- 一百四十九、做背包的思路
- 一百五十、字典使用
- 一百五十一、如何直接使用代码加载Resources下面的物品
- 一百五十二、如何用代码实现在检视面板中下拉选择
- 一百五十三、 如何在canvas中使用grid layout Group
- 一百五十四、 如何解决 setActive一个物体为false时,如果物体上有脚本,那么脚本也会不禁用
- 一百五十五、 如何添加监听器listener(如更新UI)
- 一百五十六、 如何为图片添加拖拽事件触发
- 一百五十七、 为游戏物体添加检测事件的方法
- 一百五十八、 如何使用接口的方法实现事件检测
- 一百五十九、 图片icon随着鼠标移动代码
- 一百六十、 如何判断鼠标是否点击了游戏物体
- 一百六十一、 如何随机生成一个方向
- 一百六十二、 Edge Collider 2D使用跟ploygon collider 2d使用得差不多
- 一百六十三、如何实现游戏运行时不可见,游戏不运行可见的思路:
- 一百六十四、如何使用代码获取tilemap上的所有瓦片的位置:
- 一百六十五、如何实现代码中的pubulic属性不显示到检视面板中:
- 一百六十六、tilemap的疆域是按最远的瓦片的长宽来计算的
- 一百六十七、如何将世界坐标转换为tile在tilemap中的坐标:
- 一百六十八、水平转向的代码
一百零一、如何操作一个游戏物体由多个部分组成的动画
当一个人物由多个部分的动画组成,可以将动画的多个部分都放入一个数组中,当需要执行某个动作时,循环数组执行某一个动画就可以了
一百零二、如何使用rigidbody 2d进行物体移动
float h = Input.GetAxis(“Horizontal”); rd.velocity = new Vector2(h " speed * Time.fixedDeltaTime, rd.velocity.y);
一百零三、获取游戏物体身上的组件方法
一个游戏物体上可以挂在多个脚本,可以通过如下获取脚本,同时,当播放动画的时候,一般都需要先获取Animator组件
-
public定义好
-
直接拖动
-
通过代码GetComponent获取
一百零四、代码控制物体朝向
transform.rotation=Quternion.Euler(0,0,0)右边
transform.rotation=Quternion.Euler(0,180,0)右边
一百零五、不使用插件,纯手动跳跃的实现
-
还是使用rigidbody2d组件
-
通过rigidbody 2d组件给一个向上的力
rd.AddForce(Vector2.up*500F);
- 如何防止多段空中跳跃
可以设定给一个int的值如 int 具名Num=1
在按下键的时候Num-=1
同时执行动画的条件加上一个&& 条件Num>0
当落在地上的时候Num=1
- 如何判断是否落在地上
先给地上打上标签,通过碰撞体碰撞的时候判别,碰撞的时候识别碰撞的是什么,可以通过
other.transform.tag
一百零六、如何判断玩家按下了某个键
Input.GetKeyDown(KeyCode.K)
一百零七、如何防止跳的过程中可以左右移动
只需要判断是否在地上,在空中,就不移动,在移动方法中直接return
if(isOnGround -false) return;
一百零八、实现多方向开枪的思路
-
在玩家上和右边创建空物体作为发射点
-
在hirachy中,将发设定放在玩家的下面
一百零九、如何保存预制体变动
-
如果在hirachy中,预制体有 改动
-
在inspector面板中,点击overrides保存变动
-
然后点击apply all
一百一十、如何制作子弹预制体
-
在hirachy中,创建一个2d object中的sprites–squre
-
将子弹图片拖入到建好的squre中的sprite里
-
重置坐标,点击transform右上三点,点击reset
-
设置子弹大小,Transform中,设置scale
-
修改squre为bullet
-
为bullet添加box collider 2d和rigidbody 2d,取消rigidbody 2d中重力为0
-
勾选bullet中rigidbody 2d组件中的is Trigger
-
锁定rigidbody 2d中的z轴:Constaints–Freeze Rotation z
-
为子弹添加新的层级,选中bullet,然后在sprite rederer中–sorting layer–add sorting layer
一百一十一、如何从预制体路径上生成子弹
如我的子弹预制体放在resource下面的Prefabs/Bullet,则代码可以表示为:
GameObject temp = Resources.Load(“Prefabs/Bullet”);
GameObject go =Instantiate(temp, curPoint.transform.position, Quaternion.identity);
一百一十二、如何实现子弹飞行
-
调整方向,子弹的方向,可以通过调整子弹的z轴实现
-
加速度飞行,如y方向飞,如何代码可实现rigidbody.velocity=new Vector2(0,23)
一百一十三、直接在代码里面可以使用标签匹配找到物体
GameObject.FindGameObjectWithTag(“xxxx”)
一百一十四、欧拉角表示旋转
Quaternion.Euler(x,y,z)
x y z表示角度,具体的可以在inspector面板中transform上输入数值观看效果
一百一十五、如何获取另外一个脚本的方法
如果一个物体上挂载了两个脚本A和B,那么在A脚本中,可以通过GetComponent() 来获取B这个脚本,从而可以调用里面的方法
一百一十六、如何通过路径加载AudioClip
AudioClip clip=Resources.Load<AudioClip>("Sounds/kill.wav");
AudioSource.PlayClipAtPoint(clip,Camera.main.transform.position);
一百一十七、代码中如何控制游戏物体身上的Animator组件是否勾选
private Animator anim;
anim.enabled=true或者false
一百一十八、如何通过界面的方式添加动画事件
-
点开animation窗口
-
点击左边的add event事件按钮
-
此时右边窗口上面就会出现事件的标记,可以拖动标记到你想要添加事件的地方
-
给游戏物体挂载脚本,并选中游戏物体
-
此时Animation Event监视面板中就可以选择Function,选择脚本上的方法即可
一百一十九、围绕自身旋转代码实现
rigidbody.transform.Rotate(new Vector3(0,0.1),Space.Self)
一百二十、手榴弹遇到物体时的状态设置
-
速度0
-
旋转0
-
重力0
rd.velocity = Vector2.zero; rd.transform.rotation = Quaternion.Euler(0, 0, 0); gameObject.GetComponent<Rigidbody2D>().gravityScale = 0;
一百二十一、移动的第四种方法
transform.position = Vector2.MoveTowards(transform.position, player.position, Time.deltaTime);
一百二十二、游戏物体旋转的写法
transform.rotation = Quaternion.Euler(new Vector2(