Unity练习 开发日志(二)

前情提要

开发日志(一)概括讲述了从0开始的过程,也就是走准备 开发环境 ->学习C#基础 -> 熟悉Unity基本操作 -> 开始实战演练的步骤。实战选择自己设计一个简单的2D RPG游戏。而到3月13日,初步实现了人物的行走与Tilemap背景。

搭建地图障碍物

除了一个一个Object搭,然后赋予碰撞箱之外,Untiy 2D也提供了Tilemap的碰撞。这样就可以简单地设计平面地图了。

碰撞触发器实现攻击效果

在存储Jotaro信息的脚本文件中加入下列代码,然后所有拥有Player这个tag的物体在于Jotaro相撞时都会触发攻击效果。另外,其中我还加入了attackSound,即攻击音效。中间还混杂了调试信息、计算生命值和防御力等东西……

   public void OnCollisionEnter2D(Collision2D coll)
    {
        Debug.Log("Collided.");
        if(coll.gameObject.tag == "Player")
        {
            System.Random r1 = new System.Random();
            int index = r1.Next(0, attackSound.Length);
            float dp = coll.gameObject.GetComponent<Player>().defensivePower;
            source.clip = attackSound[index];
            source.Play();
            Debug.Log("成功攻击.");
            float damage = attackDamage > dp ? attackDamage - dp : 0;
            coll.gameObject.GetComponent<Player>().health -= damage;
            strength -= damage * 0.1f;
            Debug.Log(nickname + "对" + coll.gameObject.GetComponent<Player>().nickname + "造成了" + damage.ToString("G") + "点伤害");
        }
    }

攻击实现,另加有生命值<=0即消失的脚本。
(另一个人是年轻Joseph)
父慈子孝

人物行走动画

这里需要用到Unity中的Animator控件。为了方便制作,我是以(一)中那个移动动画为controller,在物体Jotaro下开了一个Animator。

打开Animator控制框。
animator的作用是在各种动画之间来回切换,如图:
在这里插入图片描述
Entry表示主体生成。其他的条件动画都需要从Entry出发。要制作行走动画,我们需要设置一些state.注意,绿色的表示入口,而橙色的表示默认状态。

首先右键单击空白处,新建一个Empty的State。取个名字,这里是“New State”。然后修改这个state,在motion选项中,选择你需要的动画。(需要先制作好animation)
在这里插入图片描述

右键单击橙色框,选择“Make Transition”,出现箭头,将其指向“New State”。

接下来我们需要设置参数,用来控制箭头的流动。
在这里插入图片描述
点选左边的"Parameters"(参数),点击 + + +号,新建参数,随便取个名字,数字值是其初始值。

接着,打开物体Jotaro的移动脚本,在移动时修改animator中的参数,更改后的BaseMove.cs如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BaseMove : MonoBehaviour
{
    // Start is called before the first frame update
    public float MoveSpeed = 15.0f;

    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
    
    }

    void FixedUpdate()
    {
        ///
        ///
        Animator ator = gameObject.GetComponent<Animator>();
        
        if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
        {
            transform.Translate(0, 1 * MoveSpeed * Time.deltaTime, 0, Space.Self);
        }
        if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
        {
            transform.Translate(0, -1 * MoveSpeed * Time.deltaTime, 0, Space.Self);
        }
        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
        {
            transform.Translate(-1 * MoveSpeed * Time.deltaTime, 0, 0, Space.Self);
        }
        if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
        {
            transform.Translate(1 * MoveSpeed * Time.deltaTime, 0, 0, Space.Self);
        }
        
		// 动画更改检测
        if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
        {
            ator.SetInteger("state", 1);
        }
        else if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
        {
            ator.SetInteger("state", 1);
        }
        else if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
        {
            ator.SetInteger("state", 1);
        }
        else if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
        {
            ator.SetInteger("state", 1);
        }
        else
        {
            ator.SetInteger("state", 0);
        }
    }
}

最后,记得改改箭头的参数条件。选择橙框指向动作框的箭头,将其条件设置为state equals 1。
在这里插入图片描述
记得添加一条逆向箭头,条件设置为state equals 0,这样在停止移动时,动画又会变回静止动画。

在这里插入图片描述
这个时候的承太郎终于有走路的动画啦~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity是一款主要用于游戏开发的跨平台开发工具,它可以用于开发 PC、手机、网页等多种平台的游戏。Unity具有易学易用、高效快速开发、强大的跨平台性等优点,被广泛应用于游戏和虚拟现实开发领域。 超图二次开发是指在超图地理信息系统平台的基础上,通过编程实现用户特定需求的开发过程。超图地理信息系统平台是一种地理信息系统软件开发平台,其具有模块化、可扩展、跨平台等特点,可以满足不同行业、不同领域用户的需求。 相比之下,Unity主要用于游戏开发,而超图主要用于地理信息系统开发。两者虽然应用领域不同,但实际上都是软件开发领域中常见的“二次开发”方式。在程序员熟悉的领域中,使用开发平台进行二次开发可以方便快捷地实现特定需求,同时也可以降低开发成本,提高开发效率。 总之,Unity和超图二次开发都是软件开发领域中常见的二次开发方式,它们基于不同的开发平台,应用于不同的领域,但都有着高效快捷、灵活可扩展等共同的特点。 ### 回答2: Unity是一款跨平台的游戏引擎,可以用来开发Windows、Mac、Android、iOS等多种平台的游戏。它拥有一个强大的可视化编辑器,支持写代码或使用脚本,提供了丰富的组件库,使得开发者能够快速地开发出高质量的游戏。Unity的优点在于不需要太多的编程知识,使得开发者可以更加专注于游戏本身的创作。 超图是一个专业的地理信息系统软件开发公司,提供基于GIS地理信息系统的软件开发和数据解决方案。超图二次开发基于超图技术的前置条件在实现业务上更加高效、精准、交互性更强,在处理历史数据、现场监测数据等数据方面也有其优势。超图可以为不同企业设计、开发和提供定制化的GIS解决方案和技术服务,包括开发GIS软件、GIS数据的整理、处理、分析、创建等。 Unity经常被用于游戏的开发,而超图则经常被用于各类地图信息的处理。两者在开发方式上有些许不同,但在自身领域内具有非常强大的能力。如果开发者需要开发一款地图信息相关的游戏软件,或者需要将游戏加入到地图信息中,使用Unity和超图二次开发来协同工作将非常实用。此时,Unity可以帮助开发者设计出游戏的各个功能,并进行动态效果的展示;超图则可以将地图的各个信息点导入地图中,并实现与游戏的交互效果。两者协同开发可以更好地提高软件的交互性、用户体验,并提升整个软件的品质。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值