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 ...
随机推荐
- TCMalloc小记
周末抽空看了一下tcmalloc,了解了个大概.下面记录一下. 一. 原理 tcmalloc就是一个内存分配器,管理堆内存,主要影响malloc和free,用于降低频繁分配.释放内存造成的性能损耗,并 ...
- 主引导记录MBR/硬盘分区表DPT/主分区、扩展分区和逻辑分区/电脑启动过程
主引导扇区主引导扇区位于整个硬盘的0柱面0磁头1扇区{(柱面,磁头,扇区)|(0,0,1)},bios在执行自己固有的程序以后就会jump到MBR中的第一 条指令.将系统的控制权交由mbr来执行.主引 ...
- 关于javascript变量作用域的研究。
开始 一个变量的作用域(scope)是程序源代码中定义这个变量的区域.全局变量具有全局作用域,在javascript中的任何地方都是有定义的.然而在函数内申明的变量只在函数体内有定义.他们是局部变量, ...
- SharePoint Framework (SPFx)安装配置以及开发-基础篇
前言 SharePoint Framework(SPFx),是页面 和Webpart的模型,完全支持本地开发(即完全可以脱离SharPoint环境在本地进行开发),SPFx包含了一系列的client- ...
- 【CSS学习笔记】关于有语义标签
1.哪些是单闭合标签,哪些是双闭合标签? HTML的单闭合标签有: 1.<br /> 2.<hr /> 3.<area /> 4.<base /> 5. ...
- codewars-random(2)
找出数组中的间谍 思路一:遍历一遍数组,开始前将flag设置为0:将count设为0:每当出现一个奇数(注意负数)count加1,当count大于等于2时将flag至为1: 再遍历一遍数组,如果fla ...
- linux 安装 Chrome
一.添加PPA 从Google Linux Repository(http://www.google.com/linuxrepositories/)下载安装Key,或把下面的代码复制进终端,回车,需要 ...
- UIView类绘图出现错误提示
一:问题: Jan 16 15:49:53 CUBOT Band Ⅲ[2082] <Error>: CGContextSetLineWidth: invalid context 0x0. ...
- gridcontrol如何根据值来动态设置某一行的颜色
应用场景:当我们使用devexpress gridcontrol wpf控件时.可要会要根据这一行要显示的值来设置相应的颜色 可以通过下面方法来实现 一.先定义一个style <local:Co ...
- R和python连接SQL sever 数据库操作
在R的使用中,为了方便提取数据, 我们经常要进行数据库进行操作,接下来我们尝试使用R进行连接数据. 这里我们使用R中的RODBC进行操作, 首先,我们需要先配置ODBC资源管理器 通过任务管理器或者w ...