经典的射击小游戏:捕鱼达人
灵魂画师上线:
这是比较直白的草图也叫灵魂图,中间大方框周围的小方框代表鱼的生成位置,鱼通过这七个点来生成,并且游向屏幕中央,
来让玩家看到这种效果:
而单纯的只给鱼向前游是不行的,那样看着会很机械,所以要模仿鱼的左右移动,也就是弧线移动。
弧线移动的实现方式也很简单,说白了就是让他边扭着身子边直线跑,这样就是弧线移动了。
把这两个运动分解成可以复用的两个脚本,一个直线移动,一个掌控自身的增量旋转。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
作者:琦玉老师的二弟子
*/
namespace JumpAgent{
public class AutoMove : MonoBehaviour
{
public float speed = 1f;
public Vector3 Dir = Vector3.right;
private void Update()
{
transform.Translate(Dir * speed * Time.deltaTime);
}
}//类
}//命名空间
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
作者:琦玉老师的二弟子
*/
namespace JumpAgent{
public class AutoRotate : MonoBehaviour
{
public float speed = 10f;
private void Update()
{
transform.Rotate(Vector3.forward, speed * Time.deltaTime);
}
}//类
}//命名空间
有了这两个脚本就能开始生成鱼了:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
作者:琦玉老师的二弟子
*/
namespace JumpAgent
{
public class FishMaker : MonoBehaviour
{
public Transform[] genPositions;//鱼的生成位置
public GameObject[] fishPrefabs;//所有鱼的预制体
public Transform fishHolder;//收纳鱼的clone,防止散乱
private void Start()
{
InvokeRepeating("MakeFish", 0, 0.1f);
}
void MakeFish()
{
//在什么位置生成什么鱼
int genPosIndex = Random.Range(0, genPositions.Length);
int fishPreIndex = Random.Range(0, fishPrefabs.Length);
//获取鱼的最大生成数量和最大速度
int maxNum = fishPrefabs[fishPreIndex].GetComponent<FishAttribute>().maxNuml;
int maxSpeed = fishPrefabs[fishPreIndex].GetComponent<FishAttribute>().maxSpeed;
//决定鱼的生成数量和速度
int num = Random.Range