Unity3d-打靶游戏

游戏内容

  1. 靶对象为 5 环,按环计分;
  2. 箭对象,射中后要插在靶上;
  3. 游戏仅一轮,无限 trials;添加一个风向和强度标志,提高难度;

思路

游戏设计

首先制作所需要的游戏对象。

靶对象的制作

创建一个Empty对象,命名为Target,然后创建五个Cylinder子对象,分别代表五个环,为了视觉效果好看些可以给环上不同的颜色,只需自己制作想要颜色的Material即可。五个环的属性如下:
这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述

注意最后这里我添加了第二个摄像机,用来近距离观察靶对象,必须设置clear flags属性为Depth Only,每次Render之前,只是清空深度缓冲区,但是并没有清空颜色缓冲区。这样第二个摄像机的画面就能够出现在主摄像机当中。

弓箭的制作

创建一个Empty对象为Arrow,其子对象使用一个Cylinder作为箭体,一个Cube作为箭头。箭头Box Collider的Is Trigger打勾,然后给Arrow添加rigidbody。
这里写图片描述
这里写图片描述这里写图片描述
这里为箭头添加了碰撞监听事件,因为当弓箭击中靶目标的时候会插在靶上,并且根据击中的环得分,在箭头添加监听事件可以获取到碰撞到的是哪一个环,同时能够控制弓箭停在靶上。

其他游戏对象的制作可在源码中查看。

场记

在实现场记之前,先定义一下游戏所需要的接口。用户可以获取弓箭,移动弓箭的位置以及射出弓箭。场记管理的动作有增加或减少得分,改变风向及强度,同时也暴露出获取风向,风的强度大小的接口以供UI显示。

public interface IUserAction
    {
        void getArrow();
        void moveArrow();
        void shootArrow();
    }

    public interface ISceneController
    {
        void addScore(int point);
        void showTips(int point);
        void changeWind();
        int getWindDirection();
        int getWindStrength();
        bool ifReadyToShoot();
    }

下面是场记的实现:

public class SceneController : System.Object, IUserAction, ISceneController
    {
        private static SceneController instance;
        private GameStateController gameStateController;
        private ArrowController arrowController;

        public static SceneController getInstance()
        {
            if (instance == null) instance = new SceneController();
            return instance;
        }

        public void setGameStatueController(GameStateController gsc)
        {
            gameStateController = gsc;
        }

        public void setArrowController(ArrowController _arrowController)
        {
            arrowController = _arrowController;
        }

        public void addScore(int point)
        {
            gameStateC
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值