13.2D相关-Sprite-SpriteCreator精灵创造者
13.1 知识点
SpriteCreator是什么
- 顾名思义,Sprite Creator是精灵创造者
- 我们可以利用Sprite Editor的多边形工具创造出各种多边形
- Unity也为我们提供了现成的一些多边形
- 它的主要作用是2D游戏的替代资源
- 在等待美术出资源时我们可以用他们作为替代品
- 有点类似Unity提供的自带几何体
- 替代资源是做demo和学习时的必备品
使用SpriteCreator
在Project窗口右键创建各种形状的Sprite精灵图片
创建出来的图本质是Sprite模式下不同边数的图。
这样创建出来图可以用于美术还没做好时的替代资源。当出来正式图进行替代就行。有点类似3D场景创建立方体那些基本模型。之后可能也用于遮罩的基本图。
13.2 知识点代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson13_2D相关_Sprite_SpriteCreator精灵创造者 : MonoBehaviour
{
void Start()
{
#region 知识点一 SpriteCreator是什么?
//顾名思义,Sprite Creator是精灵创造者
//我们可以利用Sprite Editor的多边形工具创造出各种多边形
//Unity也为我们提供了现成的一些多边形
//它的主要作用是2D游戏的替代资源
//在等待美术出资源时我们可以用他们作为替代品
//有点类似Unity提供的自带几何体
//替代资源是做demo和学习时的必备品
#endregion
#region 知识点二 使用SpriteCreator
//在Project窗口右键创建各种形状的Sprite精灵图片
#endregion
}
}
13.3 练习题
使用菱形替代资源,制作一个按空格键让角色发射菱形子弹的功能
创建一个菱形多边形,拖拽到场景中调整比例。拖拽到Resource文件夹下做成预制体
创建BulletObj脚本,添加到子弹预制体上。用于控制子弹对象的移动。设置子弹移动的速度和子弹当前的移动方向变量。3秒后销毁子弹对象。创建ChangeMoveDir方法,用于改变子弹的移动方向。接受一个参数dir表示新的移动方向。将nowDir字段设置为新的移动方向。Update中使用transform.Translate方法使子弹对象沿着当前的移动方向移动。
public class BulletObj : MonoBehaviour
{
// 子弹移动速度
public float moveSpeed;
// 子弹当前的移动方向
private Vector3 nowDir;
// Start方法在脚本实例被加载时调用
void Start()
{
// 在3秒后销毁子弹对象
Destroy(this.gameObject, 3);
}
// 改变子弹的移动方向
public void ChangeMoveDir(Vector3 dir)
{
// 设置新的移动方向
nowDir = dir;
}
// Update方法在每一帧中都会被调用
void Update()
{
// 移动子弹对象
this.transform.Translate(moveSpeed * Time.deltaTime * nowDir);
}
}
在PlayerObject脚本的Update中添加按下空格创建子弹的逻辑。得到子弹脚本赋值移动的方向。
// 检查是否按下了空格键
if (Input.GetKeyDown(KeyCode.Space))
{
//创建子弹预设体
GameObject obj = Instantiate(Resources.Load<GameObject>("BulletObj"), this.transform.position + new Vector3(sr.flipX ? -0.3f : 0.3f, 0.5f, 0), Quaternion.identity);
//告诉子弹应该朝哪里动
obj.GetComponent<BulletObj>().ChangeMoveDir(sr.flipX ? Vector3.left : Vector3.right);
}
13.4 练习题代码
Lesson13_练习题
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson13_练习题 : MonoBehaviour
{
void Start()
{
#region 练习题一
//使用菱形替代资源,制作一个按空格键让角色发射菱形子弹的功能
#endregion
}
}
Lesson13_练习题_PlayerObject
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson13_练习题_PlayerObject : MonoBehaviour
{
// 玩家移动速度
public float moveSpeed = 5;
// 水平方向输入值
private float h;
// SpriteRenderer组件
private SpriteRenderer sr;
// Start方法在脚本实例被加载时调用
void Start()
{
// 获取SpriteRenderer组件
sr = this.GetComponent<SpriteRenderer>();
}
// Update方法在每一帧中都会被调用
void Update()
{
// 获取水平方向输入值
h = Input.GetAxis("Horizontal");
// 移动玩家对象
this.transform.Translate(5 * Time.deltaTime * Vector3.right * h);
// 如果h小于0,则设置sr.flipX为true,否则如果h大于0,则设置sr.flipX为false
if (h < 0)
sr.flipX = true;
else if (h > 0)
sr.flipX = false;
// 检查是否按下了空格键
if (Input.GetKeyDown(KeyCode.Space))
{
//创建子弹预设体
GameObject obj = Instantiate(Resources.Load<GameObject>("BulletObj"), this.transform.position + new Vector3(sr.flipX ? -0.3f : 0.3f, 0.5f, 0), Quaternion.identity);
//告诉子弹应该朝哪里动
obj.GetComponent<BulletObj>().ChangeMoveDir(sr.flipX ? Vector3.left : Vector3.right);
}
}
}
BulletObj
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BulletObj : MonoBehaviour
{
// 子弹移动速度
public float moveSpeed;
// 子弹当前的移动方向
private Vector3 nowDir;
// Start方法在脚本实例被加载时调用
void Start()
{
// 在3秒后销毁子弹对象
Destroy(this.gameObject, 3);
}
// 改变子弹的移动方向
public void ChangeMoveDir(Vector3 dir)
{
// 设置新的移动方向
nowDir = dir;
}
// Update方法在每一帧中都会被调用
void Update()
{
// 移动子弹对象
this.transform.Translate(moveSpeed * Time.deltaTime * nowDir);
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com