游戏项目实践(一)
2015-01-09 08:57
483 查看
下周将要完成一个简单游戏制作,现在先练练手,准备将来要用到功能实现。
一、实现主人公自动寻径
private NavMeshAgent agent//声明寻径组件
//在Start方法中初始化
void Start () {
agent=GetComponent<NavMeshAgent>();
}
void Update () {
//定义一条射线:Camera的近视角的一点转换成2d坐标,从屏幕上发射射线,方向指向光标点击坐标
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//声明射线碰撞点
RaycastHit hit;
//射线碰撞成功,该游戏对象在碰撞点集合,并调用“动画化
if (Input.GetMouseButtonDown(0) && Physics.Raycast(ray, out hit)){
agent.destination = hit.point;
AnmitionRun();
}
}
二、主人公向敌人发射子弹
if (Input.GetMouseButtonDown(0) && Physics.Raycast(ray, out hit,50.0f)) {
//判断射线碰撞到敌人
if (hit.transform.gameObject.tag == "Enemy"){
//主人公停止移动
agent.destination=girl.transform.position;
//调用射击动画
AnmitionShot();
//主人公正面朝向敌人
transform.LookAt(hit.point);
//克隆子弹
GameObject clonedBullet = (GameObject)Instantiate(Bullet, transform.position, transform.rotation);
//设置给子弹添加力的速度矢量,指向的人
clonedBullet.rigidbody.velocity = (hit.point - transform.position) * Time.deltaTime * 100;
//子弹发射两秒后销毁,减少游戏运行内存
Destroy(clonedBullet, 2);
}
}
三、调用Animation动画
方法:GameObjiect.transform.animation.Play(string);
string 为预设体动画名字
四、GUI实现,显示血条
//人物现有血量
public static int blood=50;
//红色血条
public Texture2D red;
//血条底纹
public Texture2D black;
//当前血值
public int HP = 100;
//血条长度
public void OnGUI(){
//设置子体颜色
GUI.color = Color.red;
//根据主人公血量值占血条最大值的百分比显示红条宽度
nt blood_width = red.width * blood / HP;
GUI.Label(new Rect(20, 40, 100, black.height),"HP:");
//绘制黑色血条,
GUI.DrawTexture(new Rect(40, 40, black.width, black.height), black);
//绘制红色血条
GUI.DrawTexture(new Rect(40, 40, blood_width, red.height), red);
}
五、敌人可以有领域范围,主角进入该范围,将被追杀
1、寻经
2、 if (Vector3.Distance(transform.position, girl.position) <= 50)
{
agent.SetDestination(girl.position);
}
这里有很多U3D资源、U3D培训视频、U3D常见问题、U3D项目源码我们可以一起交流学习
一、实现主人公自动寻径
private NavMeshAgent agent//声明寻径组件
//在Start方法中初始化
void Start () {
agent=GetComponent<NavMeshAgent>();
}
void Update () {
//定义一条射线:Camera的近视角的一点转换成2d坐标,从屏幕上发射射线,方向指向光标点击坐标
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//声明射线碰撞点
RaycastHit hit;
//射线碰撞成功,该游戏对象在碰撞点集合,并调用“动画化
if (Input.GetMouseButtonDown(0) && Physics.Raycast(ray, out hit)){
agent.destination = hit.point;
AnmitionRun();
}
}
二、主人公向敌人发射子弹
if (Input.GetMouseButtonDown(0) && Physics.Raycast(ray, out hit,50.0f)) {
//判断射线碰撞到敌人
if (hit.transform.gameObject.tag == "Enemy"){
//主人公停止移动
agent.destination=girl.transform.position;
//调用射击动画
AnmitionShot();
//主人公正面朝向敌人
transform.LookAt(hit.point);
//克隆子弹
GameObject clonedBullet = (GameObject)Instantiate(Bullet, transform.position, transform.rotation);
//设置给子弹添加力的速度矢量,指向的人
clonedBullet.rigidbody.velocity = (hit.point - transform.position) * Time.deltaTime * 100;
//子弹发射两秒后销毁,减少游戏运行内存
Destroy(clonedBullet, 2);
}
}
三、调用Animation动画
方法:GameObjiect.transform.animation.Play(string);
string 为预设体动画名字
四、GUI实现,显示血条
//人物现有血量
public static int blood=50;
//红色血条
public Texture2D red;
//血条底纹
public Texture2D black;
//当前血值
public int HP = 100;
//血条长度
public void OnGUI(){
//设置子体颜色
GUI.color = Color.red;
//根据主人公血量值占血条最大值的百分比显示红条宽度
nt blood_width = red.width * blood / HP;
GUI.Label(new Rect(20, 40, 100, black.height),"HP:");
//绘制黑色血条,
GUI.DrawTexture(new Rect(40, 40, black.width, black.height), black);
//绘制红色血条
GUI.DrawTexture(new Rect(40, 40, blood_width, red.height), red);
}
五、敌人可以有领域范围,主角进入该范围,将被追杀
1、寻经
2、 if (Vector3.Distance(transform.position, girl.position) <= 50)
{
agent.SetDestination(girl.position);
}
这里有很多U3D资源、U3D培训视频、U3D常见问题、U3D项目源码我们可以一起交流学习
相关文章推荐
- 第14周上机实践项目5——体会棋盘游戏中的数据存储(2)
- 游戏项目实践(二)
- 第六周上机实践项目-项目2-带武器的游戏角色
- 第六周上机实践项目——项目2-带武器的游戏角色
- 第六周上机实践项目2:带武器的游戏角色
- Cocos2d-x手机游戏开发与项目实践详解_随书代码
- 第八周上机实践项目4(1):游戏中角色类增强版
- 第五周上机实践项目2(1):游戏中的角色类
- 第五周上机实践项目——项目2-游戏中的角色类(2)
- 第八周上机实践项目——项目4-游戏中的角色类增强版-问题(2)
- 《C语言及程序设计》实践项目——数字游戏
- 第五周上机实践项目——项目2-游戏中的角色类-(2)
- 第五周上机实践项目——项目2-游戏中的角色类-(1)
- 第五周上机实践项目2(2):游戏中的角色类
- 第四次上机实践项目-项目2-游戏中的角色类-(1)
- 第14周上机实践项目5——体会棋盘游戏中的数据存储(3)
- 第三次上机实践项目-项目3-猜数字游戏
- 第五周实践项目2————游戏中的角色类(1)
- 第五周上机实践项目 项目2--游戏中的角色类(1)
- 第八周上机实践项目——项目4-游戏中的角色类增强版-问题(3)