**~~
一.飞机
~~ **
在Assets下面右键Create新建flot命名为Scenes,在右键Create新建Scene命名为MainScene,选中它,点击Create->UI->Canvas
设置为2D,16:9的画面大小
Canvas下面新建text命名为Jet
这里是已经完成的项目,已经删除了text组件,添加了Image组件
在Assets下新建Flot文件命名为Script。再右键Create新建C# Script文件命名为JecControlScript。双击打开
当然,有可能是打不开,需要安装Visaul Studio,还需要在Unity中配置一i下
Edit->Preference->External Tool打开visul studio的exe文件
JecControlScript代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class JecControlScript : MonoBehaviour {
//RectTransform引用,
RectTransform rectTransform;
// Use this for initialization
void Start () {
//当对象被放入内存调用
rectTransform = GetComponent<RectTransform>();
}
// Update is called once per frame
void Update () {
Move();
}
void Move() {
float x_speed = 0; //横轴速度
float y_speed = 0; //纵轴
if (Input.GetKey(KeyCode.A) == true
&& Input.GetKey(KeyCode.D) == false) {
x_speed = -300;
}
else if (Input.GetKey(KeyCode.D) == true
&& Input.GetKey(KeyCode.A) == false)
{
x_speed = +300;
}
if (Input.GetKey(KeyCode.W) == true
&& Input.GetKey(KeyCode.S) == false)
{
y_speed = +300;
}
else if (Input.GetKey(KeyCode.S) == true
&& Input.GetKey(KeyCode.W) == false)
{
y_speed = -300;
}
//上下左右斜向的速度一样
if (Mathf.Abs(x_speed) > 1 && Mathf.Abs(y_speed) > 1) {
x_speed *= Mathf.Sqrt(2) / 2;
y_speed *= Mathf.Sqrt(2) / 2;
}
//取出飞机的当前位置
Vector2 position = rectTransform.anchoredPosition;
//修改x坐标
position.x += x_speed * Time.deltaTime;
position.y += y_speed * Time.deltaTime;
//限制x,y的范围,避免超出屏幕
position.x = Mathf.Clamp(position.x, -360, 360);
position.y = Mathf.Clamp(position.y, -500, 500);
//位置修改后再放回去
rectTransform.anchoredPosition = position;
}
}
写完后保存回到unity将JecControlScript拖到Jet上面去
双击Jet看到JecControlScript组件已经添加到里面了
新建img文件夹放图片和音效
可以直接将图片从其他文件夹拖入这里面,单击图片设置成如下样式,并Apply
在Add Component中搜索Image Source,添加,然后点击Source Image最后面的圆圈选择图片,将飞机图片添加进去。
二.子弹
在Canvas下面新建Create Empty命名为BulletsManager在新建text命名为Bullet
BulletsManagerScript
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BulletsManagerScript : MonoBehaviour {
public GameObject originBullet; //原始的一发子弹
public RectTransform rectTransform; //飞机的位置
List<GameObject> list = new List<GameObject>(); //装子弹
AudioSource audioSource; //音频组件
//返回所有子弹
public List<GameObject> GetList()
{
return list;
}
// Use this for initialization
void Start () {
audioSource = GetComponent<AudioSource>();
for (int i = 0; i < 50; i++) {
GameObject bullet = Instantiate(originBullet);
//将复制的子弹添加到父对象
bullet.transform.SetParent(this.transform);
//恢复原始比例
bullet.transform.localScale = new Vector3(1,2,1);
list.Add(bullet);
}
}
// Update is called once per frame
void Update () {
//发射子弹
if (Input.GetKeyDown(KeyCode.J) ==