游戏制作之路(22)创建移动的敌人

栏目: 后端 · 发布时间: 5年前

内容简介:在前面介绍一个角色控制的功能,角色可以走动,也可以跳起来,还可以开火打静止的敌人,不过这样还是不爽,能否创建一些可以移动的敌人呢?本文就来解决这个问题。因此,跟前面一样创建一个胶囊体,然后再创建一个立方体当作鼻子,同样设置它们的父子关系,然后设置胶囊体的位置为(-2.5, 1.5, 18),跟前面同样的方式把鼻子设置为(0, 0.5, 0.5),这样就设置好敌人。如下图:接着在工程project下面创建一个材料,把它命名为Enemy,如下图:

在前面介绍一个角色控制的功能,角色可以走动,也可以跳起来,还可以开火打静止的敌人,不过这样还是不爽,能否创建一些可以移动的敌人呢?本文就来解决这个问题。因此,跟前面一样创建一个胶囊体,然后再创建一个立方体当作鼻子,同样设置它们的父子关系,然后设置胶囊体的位置为(-2.5, 1.5, 18),跟前面同样的方式把鼻子设置为(0, 0.5, 0.5),这样就设置好敌人。如下图:

游戏制作之路(22)创建移动的敌人

接着在工程project下面创建一个材料,把它命名为Enemy,如下图:

游戏制作之路(22)创建移动的敌人

创建这个材料之后,就可以把材料Enemy拖动场景里的Enemy和ENose了,这时这个敌人就使用这个材料来渲染,不像我们前面的物体,都是采用缺省白色的材料了。这样就可以区分玩家角色和敌人。

敌人创建之后,还有一个问题,敌人怎么样朝着玩家的角色进行行走,这里就涉及向量的计算问题了,我们知道当两个向量进行相减时,就可以计算出来两个向量的点方向。

游戏制作之路(22)创建移动的敌人

比如这里a向量减去b向量,就得一个从D指向B的向量,也就是得到任意两个向量的方向关系。因此,敌人朝着玩家角色方向跟踪,就不断地采用玩家的位置向量减去敌人的位置向量,就可以计算出来方向,当敌人向这个方向进行移动,就可以看到敌人跟踪玩家了。因此,搞懂原理之后,就可以来写代码,如下:

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

public class EnemyMovement : MonoBehaviour {

    public float speed = 2.0f;
    public float turnSpeed = 180.0f;

    private CharacterController controller;
    private Transform player;

    // Use this for initialization
    void Start () {
        controller = GetComponent<CharacterController>();
        player = GameObject.FindWithTag("Player").transform;
    }
	
	// Update is called once per frame
	void Update () {
        Vector3 direction = player.position - transform.position;
        direction.y = 0;

        transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(direction), turnSpeed * Time.deltaTime);

        controller.Move(transform.forward * speed * Time.deltaTime);
    }
}

这段代码是EnemyMovement,关联到敌人对象上,当然它也是创建了一个CharacterController组件,把碰撞体都要去掉,鼻子的碰撞体也要去掉。在Start函数里,首先获取本组件的角色组件到controller变量里,通过标签找到玩家角色对象,玩家的角色标签记Player得在这里设置,如下图:

游戏制作之路(22)创建移动的敌人

这样就可以找到角色对象保存在player变量里。通过下面这行代码:

Vector3 direction = player.position - transform.position;

就可以计算玩家所在的方向向量,然后通过Quaternion.RotateTowards转动敌人的方向,让它的鼻子朝着玩家进行移动。

到这里就可以完成敌人的跟踪功能。

单片机编译器之链接器

https://edu.csdn.net/course/detail/8437

比特币源码入门教程

https://edu.csdn.net/course/detail/6998

深入浅出Matplotlib

https://edu.csdn.net/course/detail/6859

深入浅出Numpy

http://edu.csdn.net/course/detail/6149

Python游戏开发入门

http://edu.csdn.net/course/detail/5690


以上所述就是小编给大家介绍的《游戏制作之路(22)创建移动的敌人》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

UNIX编程艺术

UNIX编程艺术

[美] Eric S. Raymond / 姜宏、何源、蔡晓骏 / 电子工业出版社 / 2012-8 / 99.00元

《UNIX编程艺术》主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S.Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为《UNIX编程艺术》贡献了宝贵的内容。《UNIX编程艺术》内容涉及社群文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。一起来看看 《UNIX编程艺术》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具