Unity3D学习笔记(十二):2D模式和异步资源加载
2D模式和3D模式区别:背景纯色,摄像机2D,没有深度轴

给切图打上标签

老版图集打包,选择Always Enabled:把同一标签的图片,全部挤在一张图片上,合理利用剩余空间

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//简易动画状态机,面向对象的思想
//枚举表示状态
public enum PlayerState
{
Idle,
Walk,
}
public class SpriteTest : MonoBehaviour
{
public Sprite[] idleSprites;
public Sprite[] walkSprites;
public float timeInterval = 0.1f;
private SpriteRenderer spriteRenderer;
private float curTime = ;
private int curIndex = ;
private float h;
private PlayerState state = PlayerState.Idle;//枚举项附初值
public PlayerState State//给枚举变量添加属性
{
get
{
return state;
}
set
{
if (state != value)//判断状态是否改变
{
curIndex = ;//如果改变,把数组下标curIndex清零
state = value;//给状态赋新值
}
}
}
// Use this for initialization
void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}
// Update is called once per frame
void Update()
{
h = Input.GetAxisRaw("Horizontal");
CheckState();
}
//根据轴值检测状态
void CheckState()
{
if (h == )
{
State = PlayerState.Idle;
}
else
{
State = PlayerState.Walk;
}
ChooseState();
}
//根据状态传递数组
void ChooseState()
{
switch (State)
{
case PlayerState.Idle:
PlayAnimation(idleSprites);
break;
case PlayerState.Walk:
PlayAnimation(walkSprites);
break;
}
}
//接收数组播放动画
void PlayAnimation(Sprite[] sprites)
{
curTime += Time.deltaTime;
if (curTime >= timeInterval)
{
curIndex++;
curIndex %= sprites.Length;
spriteRenderer.sprite = sprites[curIndex];
curTime = ;
}
}
}
private void OnCollisionEnter2D(Collision2D collision)
{ }
private void OnTriggerEnter2D(Collider2D collision)
{ }
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovementController : MonoBehaviour
{
public float moveSpeed = ;
private float h;
// Use this for initialization
void Start () {
} // Update is called once per frame
void Update ()
{
h = Input.GetAxisRaw("Horizontal");
transform.Translate(Vector3.right * Time.deltaTime * h * moveSpeed);
if (h != )//判断在移动时,转身
{
transform.localScale = new Vector3(h > ? : -, , );//用Scale=-1来转身
}
if (Input.GetKeyDown(KeyCode.Space))
{
GetComponent<Rigidbody2D>().AddForce(Vector2.up * , ForceMode2D.Impulse);//施加一个向上的力
}
}
}

碰撞器需要勾选Is Trigger和Used By Effector,效应器才会有效果


Distance Joint 2D:模仿关节

弹簧关节:有重力,有弹簧的效果

Unity3D学习笔记(十二):2D模式和异步资源加载的更多相关文章
- JavaScript学习笔记(十二) 回调模式(Callback Pattern)
函数就是对象,所以他们可以作为一个参数传递给其它函数: 当你将introduceBugs()作为一个参数传递给writeCode(),然后在某个时间点,writeCode()有可能执行(调用)intr ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
- Go语言学习笔记十二: 范围(Range)
Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Unity3D之Mecanim动画系统学习笔记(十):Mecanim动画的资源加载相关
资源加载是必备的知识点,这里就说说Mecanim动画的资源如何打包及加载. 注意,Unity4.x和Unity5.x的AssetBundle打包策略不一样,本笔记是基于Unity4.x的AssetBu ...
- Android 学习笔记之Volley(八)实现网络图片的数据加载
PS:最后一篇关于Volley框架的博客... 学习内容: 1.使用ImageRequest.java实现网络图片加载 2.使用ImageLoader.java实现网络图片加载 3.使用NetWork ...
- Unity3D学习笔记(二十九):AssetBundle
AssetBundle 什么是AssetBundle? AssetBundle是把一些资源文件或场景文件,以某种方式保存在一个文件中.一个AssetBundle可以包含模型.材质.图片或场景等.但是A ...
- Unity3D学习笔记(二十五):文件操作
文件是什么? 存储在硬盘上的最后的节点. 文件夹是什么? 文件的上级单位称为文件夹. 文件夹的基本结构? 文件夹是层级化结构的,对于同级的文件夹不可以重名,父文件夹和子文件夹可以同名> IO:I ...
- Unity3D学习笔记(二十八):Editor
Editor: 对编辑器进行一些拓展开发 关于继承Mono类的扩展开发 特性: [特性]:声明性的标签(类,方法,结构体,变量) 特性只对字段声明有效,后面必须接字段:多个特性,可以修饰一个字段 ...
随机推荐
- [py][mx]xadmin详细设置-将app注册到xadmin
首先createsuperuser,创建用户, 然后登陆xadmin. 理解下models的各个字段 复数形式及返回 注册app users/adminx.py 显示字段 users/adminx.p ...
- [LeetCode] 286. Walls and Gates_Medium tag: BFS
You are given a m x n 2D grid initialized with these three possible values. -1 - A wall or an obstac ...
- Http请求中Content-Type和Accept讲解以及在Spring MVC中的应用
在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在 ...
- iOS 第三方框架-MJRefresh
MJRefresh是一款非常好用的上拉下拉第三方库,使用也很简单.github地址: https://github.com/CoderMJLee/MJRefresh . 下拉刷新 官方给过来的例子很简 ...
- meta 如何写
阻止手机号加下划线,可拨打:<meta name="format-detection" content="telephone=no" /> (io ...
- suse zypper 添加源
一.查看源和仓库 1.查看repos (软件仓库) zypper lr 2.查看services(软件源) zypper ls 二.删除源和仓库 1.删除软件仓库 zypper rr name 2.删 ...
- python print 使用分隔符 或行尾符
使用print() 函数输出数据,但是想改变默认的分隔符或者行尾符. >>> print('ACME', 50, 91.5) ACME 50 91.5 >>> pr ...
- linux常用命令:find 命令之 exec
find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command ...
- 查看firefox浏览器 驱动geckodriver.exe文件的版本号的方法,以及下载链接
1-进入到geckodriver.exe文件的目录: 2-在路径栏下输入cmd: 3-命令行界面下输入:geckodriver.exe -h 可以看到文件的帮助信息,其中第一行就列出了版本号 为0.1 ...
- python 练习用python六剑客实现一个统计数字的个数,六剑客:(map、lambda、reduce、filter、切片、推到列表)
统计一共有几个数字 s="sdfa45ads46723" #lambda >>> filter(lambda x:x.isdigit(),list(s)) ['4 ...