基于Unity3D的2d拾宝游戏(五)
来源:互联网 发布:阿里云总裁胡晓明辞职 编辑:程序博客网 时间:2024/05/16 19:27
继上一篇文章(http://blog.csdn.net/qq_29859497/article/details/72886620),继续分析游戏实现(C#)
敌人控制类enemyController的主要行为:
- 敌人动作控制,包括左右走动与碰撞玩家时动作
- 控制动作序列贴图显示
enemyController类代码:
using System.Collections;using System.Collections.Generic;using UnityEngine;public class enemyController : MonoBehaviour { public Material runMaterial; public Material dieMaterial; public Material idleMaterial; //左右移动速度 public float speed; //初始位置 private float startPos; //控制左右方向 private bool isRight; int index; Vector2 size; Vector2 offset; void Start() { speed = 0.03f; isRight = true; startPos = transform.position.x; } //控制敌人动作 void Update() { //右 if (isRight) { transform.Translate(Vector3.right * speed); transform.GetComponent<Renderer>().material = runMaterial; animateSprite(10, 10, false); } else//左 { transform.Translate(Vector3.left * speed); transform.GetComponent<Renderer>().material = runMaterial; animateSprite(10, 10, true); } //左右转向 if ((transform.position.x - startPos) <0) { isRight = true; } if ((transform.position.x - startPos) > 2.5f) { isRight = false; } //玩家死亡,敌人不动 if (playerControler.isKill) { speed = 0; if (isRight) { anSprite(10, 1, false); } else { anSprite(10, 1, true); } } else { speed = 0.02f; } } //控制播放shader中的动作精灵 void animateSprite(int columnSize, float framesPerSecond, bool moveDirection) { index = (int)(Time.time * framesPerSecond); index = index % columnSize; if (moveDirection) { size = new Vector2((float)1.0 / columnSize, 1); offset = new Vector2(index * size.x, 0); } else { size = new Vector2((float)-1.0 / columnSize, 1); offset = new Vector2(-index * size.x, 0); } transform.GetComponent<Renderer>().material.SetTextureOffset("_MainTex", offset); transform.GetComponent<Renderer>().material.SetTextureScale("_MainTex", size); } //指定选取一帧图片 void anSprite(int columnSize, int ind, bool moveDir) { float x2 = 1.0f / (float)columnSize; float x1 = (float)ind * x2; if (moveDir) { transform.GetComponent<Renderer>().material.SetTextureOffset("_MainTex", new Vector2(x1, 0)); transform.GetComponent<Renderer>().material.SetTextureScale("_MainTex", new Vector2(x2, 1)); } else { transform.GetComponent<Renderer>().material.SetTextureOffset("_MainTex", new Vector2(x1, 0)); transform.GetComponent<Renderer>().material.SetTextureScale("_MainTex", new Vector2(-x2, 1)); } }}
附:相关代码编写伙伴BLOG:XiaoMing 和AudioMiao ,欢迎撩。
阅读全文
1 0
- 基于Unity3D的2d拾宝游戏(五)
- 基于Unity3D的2d拾宝游戏(一)
- 基于Unity3D的2d拾宝游戏(二)
- 基于Unity3D的2d拾宝游戏(三)
- 基于Unity3D的2d拾宝游戏(四)
- 基于Unity3D的2d拾宝游戏(六)
- 基于Unity3D的2d拾宝游戏(七)
- 基于Unity3D的2d拾宝游戏(八)
- Unity3D 2D游戏开发 官方教程。(五)
- 【连载】Unity3D ——强大的跨平台3D游戏开发工具(五)
- bada 2D游戏编程之五——一个基于定时器的游戏循环
- unity3d制作2d游戏的原理
- unity3d 2D游戏开发
- unity3d 2d游戏相关
- 强大的2D游戏技能特效 【unity3d教程】
- 强大的2D游戏技能特效 【unity3d教程】
- unity3d 2d游戏关于必备元素的解析
- unity3d开发2d游戏关于Assetbundle的使用
- Java线程:新特征-线程池
- 排序之归并排序
- JSP数据交换(一)
- Trie树的原理和实现Java版
- java使用poi写入excel文档的一种解决方案
- 基于Unity3D的2d拾宝游戏(五)
- Matlab 2014a 安装
- 最长无重复字符串
- 在ubuntu下安装中文输入法
- Installing software for ubuntu 16.04.2 LTS
- JSP —— one
- C# 枚举
- IOS
- linux64系统运行32位程序