Android Game Examples
Game2
using UnityEngine;
using System.Collections;
public class Game2_Player : MonoBehaviour {
public GameObject m_bulletPrefab; //子弹预设
private Transform m_fireTransform; //子弹的发射位置
private Camera m_mainCamera; //摄像机
public float m_moveSpeed = 5.0f; //移动速度
private Vector3 m_moveDirection; //移动方向
private Vector3 m_rotateFrom; //旋转起点
private Vector3 m_rotateTo; //
public float m_fireInterval = 0.3f; //射击时间间隔
private float m_fireTimer; //射击计时器
private AudioSource m_audioSource;
void Start () {
m_mainCamera = Camera.main;
m_fireTransform = transform.Find("BulletSpawner");
m_audioSource = GetComponent<AudioSource>();
}
void Update () {
Move();
Rotate();
)) {
Fire();
}
}
void LateUpdate() {
//相机跟随玩家
m_mainCamera.transform.position = ,transform.position.z);
}
//移动
void Move() {
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
|| v != ) {
m_moveDirection = ,v);
} else {
m_moveDirection = Vector3.zero;
}
transform.Translate(m_moveDirection * m_moveSpeed * Time.smoothDeltaTime,Space.World);
}
//旋转
void Rotate() {
transform.rotation = Quaternion.LookRotation(GetRotation());
}
//射击
void Fire() {
if(m_fireTimer >= m_fireInterval) {
m_fireTimer = 0f;
GameObject bulletGo = Instantiate(m_bulletPrefab,m_fireTransform.position,Quaternion.LookRotation(GetRotation())) as GameObject;
if(!m_audioSource.isPlaying) {
m_audioSource.Play();
}
} else {
m_fireTimer += Time.smoothDeltaTime;
}
}
//获取旋转角度
Vector3 GetRotation() {
//视角从Y轴向下看,x轴不变,y轴为z轴.旋转起点为屏幕中央,旋转终点为鼠标在屏幕中的位置
m_rotateFrom = ,Screen.height * 0.5f);
m_rotateTo = Input.mousePosition;
m_rotateTo.z = m_rotateTo.y;
m_rotateTo.y = ;
//获得旋转方向
Vector3 rotateDirection = m_rotateTo - m_rotateFrom;
return rotateDirection;
}
}
Game2_Player
using UnityEngine;
using System.Collections;
public class Game2_Enemy : MonoBehaviour {
public float m_moveSpeed = 5.0f; //移动速度
private Transform m_playerTransform; //玩家的位置
private Rigidbody m_rigidBody;
; //血量
void Start () {
m_playerTransform = GameObject.Find("Player").transform;
m_rigidBody = GetComponent<Rigidbody>();
}
void Update () {
if(Vector3.Distance(m_playerTransform.position,transform.position) > 1.0f) {
Chase();
} else {
//m_rigidBody.Sleep();
}
}
void OnDrawGizmos() {
Gizmos.color = Color.red;
Gizmos.DrawLine(transform.position,transform.position + transform.forward);
}
//追逐玩家
void Chase() {
transform.rotation = Quaternion.LookRotation(m_playerTransform.position - transform.position);
transform.Translate(Vector3.forward * m_moveSpeed * Time.smoothDeltaTime);
}
//被打中
public void OnHit(int damage) {
) {
m_hp -= ;
} else {
Destroy(gameObject);
}
}
}
Game2_Enemy
using UnityEngine;
using System.Collections;
public class Game2_EnemySpawner : MonoBehaviour {
public GameObject m_enemyPrefab; //敌人预制
public float m_spawnTime = 10.0f; //生成敌人时间间隔
private float m_startTime; //初始时间
void Start() {
m_startTime = Time.time;
}
void Update() {
if(Time.time - m_startTime >= m_spawnTime) {
Spawn();
m_startTime = Time.time;
}
}
void OnDrawGizmos() {
Gizmos.color = Color.green;
Gizmos.DrawSphere(transform.position,0.2f);
}
//每10秒生成一次敌人
void Spawn() {
Instantiate(m_enemyPrefab,transform.position,Quaternion.identity);
}
}
Game2_EnemySpawner
using UnityEngine;
using System.Collections;
public class Game2_Bullet : MonoBehaviour {
public float m_moveSpeed = 30.0f; //移动速度
void Start () {
StartCoroutine(Destroy());
}
void Update () {
Move();
}
//子弹碰到敌人,减血
void OnCollisionEnter(Collision collision) {
if(collision.collider.CompareTag("Enemy")) {
collision.gameObject.GetComponent<Game2_Enemy>().OnHit();
Destroy(gameObject);
}
}
//移动子弹
void Move() {
transform.Translate(Vector3.forward * m_moveSpeed * Time.smoothDeltaTime);
}
//删除子弹
IEnumerator Destroy(float delayTime) {
yield return new WaitForSeconds(delayTime);
Destroy(gameObject);
}
}
Game2_Bullet

项目:https://pan.baidu.com/s/1o7UqEPs
Android Game Examples的更多相关文章
- Android添加代码检查权限
1,首先创建一个项目,然后创建一个类,hello.java public class hello { public static final String PERMISSION_SAY_HELLO = ...
- [转载]Android开发必备的21个免费资源和工具
转载自: http://blog.csdn.net/shimiso/article/details/6788375 Android移动开发平台现在不是一个“火”字能形容的,今年Android平台在市场 ...
- [Artoolkit] ARToolKit's SDK Structure on Android
Most applications on Android are developed in Java, and Android provides a rich framework of classes ...
- Android Volley 库的使用
本文内容 什么是 Volley 库 Volley 能做什么 Volley 架构 环境 演示 Volley 库的使用 参考资料 Android 关于网络操作一般都会介绍 HttpClient 以及 Ht ...
- Android Volley 库通过网络获取 JSON 数据
本文内容 什么是 Volley 库 Volley 能做什么 Volley 架构 环境 演示 Volley 库通过网络获取 JSON 数据 参考资料 Android 关于网络操作一般都会介绍 HttpC ...
- COSC2309/2347 Semester 1, 2019
Mobile Application DevelopmentCOSC2309/2347 Semester 1, 2019Movie Night PlannerAssignment 1 (20 mark ...
- FGX Native library功能介绍
Hot news from the fields of the cross-platform library "FGX Native" development. New Engli ...
- [转]Java Code Examples for android.util.JsonReader
[转]Java Code Examples for android.util.JsonReader The following are top voted examples for showing h ...
- bazel build //tensorflow/examples/android:tensorflow_demo报错: fatal error: 'cuda_runtime.h' file not found
In file included from ./third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1:external/eigen_archive/u ...
随机推荐
- Java 设计模式(二)-六大原则
Java 设计模式(二)-六大原则 单一职责原则(Single Responsibility Principle) 定义: 不要存在多余一个原因导致类变更,既一个类只负责一项职责. 问题由来: 当类A ...
- 办理多伦多大学(本科)学历认证『微信171922772』Toronto学位证成绩单使馆认证University of Toronto
办理多伦多大学(本科)学历认证『微信171922772』Toronto学位证成绩单使馆认证University of Toronto Q.微信:171922772办理教育部国外学历学位认证海外大学毕业 ...
- Codevs 4189 字典
4189 字典 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题目描述 Description 最经,skyzhong得到了一本好厉害的字典,这个字典里整整有n ...
- ACM第二题 生理周期
人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例如,智力周期的高峰,人会思维敏捷,精力容易 ...
- 距离VR时代的真正到来还有多久?
2016年被称为是VR元年,各大VR设备商的宣传攻势铺天盖地,众VR产品看的人眼花缭乱.随着平民化进程不断推进以及渗透率的提升,VR成为近两年来最引人关注的焦点,在众多领域的共同作用下,VR时代是否即 ...
- 石头剪刀布 OpenJudge 1.6.08
石头剪刀布是常见的猜拳游戏.石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一样,则不分胜负. 一天,小A和小B正好在玩石头剪刀布.已知他们的出拳都是有周期性规律的,比如:"石头-布-石头-剪 ...
- chrome浏览器如何在本地安装谷歌访问助手教程
许多用户都需要使用谷歌的gmail,搜索.我们目前可以用谷歌访问助手解决google无法访问的问题.那么谷歌访问助手在chrome浏览器中如何安装和使用呢?今天我们详细介绍. 本地安装谷歌访问助手的步 ...
- html+css基础篇
2016年11月19号,计划把基础在看一下,听大神说好的东西就要多看几遍,知识是学来用的解决问题的,加油 接下来的是我在自学中的小笔记吧,每天都在保持几个小时的学习思考状态,由于要升本所以学前端的时间 ...
- Openjudge-NOI题库-蛇形填充数组
题目描述 Description 用数字1,2,3,4,...,n*n这n2个数蛇形填充规模为n*n的方阵. 蛇形填充方法为: 对于每一条左下-右上的斜线,从左上到右下依次编号1,2,...,2n-1 ...
- wifi 模块
#include"STC12C5A.H" #include <string.h> #include<intrins.h> #define uint unsi ...