前言
最近跟着B站上一个项目做了个简单的飞机大战,把其中的一些gameplay程序做一些总结,发在这里,作为学习的记录。整个gameplay主要分为“背景滚动”、“玩家移动与射击”、“敌机的生成”、“范围式子弹”、“碰撞检测”等部分。使用Unity引擎进行学习。
背景滚动部分
如图,最终要求实现这样一个背景的滚动,达成无限地图。
实现原理
通过更改Shader中的主纹理offset偏移值实现纹理在游戏物体表面循环,从而达成视觉上的“无限循环”。
具体步骤
在unity中新建一个四方面(Quad)物体。
然后将一个图片(注意不能为精灵类型)作为材质添加到该物体上。
将该物体的Shader类型调整成如下。
之后即可通过代码调用主纹理的TextureOffset属性来循环该纹理。
代码示例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(BoxCollider2D))]
public class T_PlayerController : MonoBehaviour
{
private GameObject bg;
void Start()
{
bg = GameObject.Find("BG");
}
void Update()
{
bg.GetComponent<Renderer>().material.SetTextureOffset("_MainTex",new
Vector2(0,Time.time/5));
}
}