标签: game-development

如何让敌人跟随pygame中的玩家?

我参与了游戏。它运行良好,但我想在游戏中添加敌人。到目前为止,我在pygame精灵中添加了敌人的图像。但是,如何使敌人跟随玩家呢?我尝试这样做,但这只是使敌人的形象直接指向玩家:

def moveEnemy(self):
    enemies.rect.x = player.rect.x
    enemies.rect.y = player.rect.y
    all_sprites_list.add(enemies)
    enemies_list.add(enemies)
Run Code Online (Sandbox Code Playgroud)

我认为这会使敌人的形象跟随玩家。相反,它只是重叠了玩家的图像。我读了很多pygame sprite例子,但这些例子说用'enemies.rect.x = -5'或类似的东西替换'enemies.rect.x = player.rect.x'。我也尝试过此操作,但是它只是将图像向上移动,而不是跟随播放器。我必须公式化吗?如果是这样,我不知道该怎么办。我该如何使敌人移动,又如何使其跟随玩家?有人可以帮我解决这个问题吗?任何帮助,将不胜感激。Windows 7,Python 2.6,Pygame 2.6,精灵

python pygame sprite game-development

2
推荐指数
1
解决办法
8390
查看次数

在矩形中均匀随机分布点的算法

我想在矩形中随机放置一些点。

生成随机的 x, y 坐标不是一个好主意,因为很多时候这些点主要分布在同一区域而不是覆盖整个矩形。

我不需要非常快的算法或最佳覆盖位置,只需要可以在简单游戏中运行的算法,该游戏生成几乎覆盖整个矩形的随机 (x, y)。

在我的特殊情况下,我试图生成一个简单的天空,所以我的想法是在天空矩形中放置近 40/50 颗星星。

有人可以指出我一些常见的算法来做到这一点吗?

random algorithm position game-development

2
推荐指数
2
解决办法
1779
查看次数

如何使用C#在Unity 3D中的随机时间(相同位置)生成敌人?

我每个人都反复产生敌人1.75f。但是我不知道如何使用随机函数。我的原型游戏就像Chrome浏览器中的游戏,当找不到页面时就会显示。

感谢你们对我的帮助。

这是我的代码:

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

    public class EnemyGeneratorController : MonoBehaviour
    {
        public GameObject enemyPrefeb;
        public float generatorTimer = 1.75f;

        void Start () 
        {

    }

    void Update ()
    {

    }

    void CreateEnemy()
    {
        Instantiate (enemyPrefeb, transform.position, Quaternion.identity);
    }

    public void StartGenerator()
    {
        InvokeRepeating ("CreateEnemy", 0f, generatorTimer);
    }

    public void CancelGenerator(bool clean = false)
    {
        CancelInvoke ("CreateEnemy");
        if (clean)
        {
            Object[] allEnemies = GameObject.FindGameObjectsWithTag ("Enemy");
            foreach (GameObject enemy in allEnemies)
            {
                Destroy(enemy);
            }
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

c# game-development game-engine unity-game-engine

2
推荐指数
1
解决办法
317
查看次数

创建多个JButton(数百个)会在创建它们时产生巨大的延迟

当我创建JButtons时,会有很大的延迟。以下是一些有关如何创建按钮的示例代码:

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class Scratch {

public static void main(String[] args) {
    Runnable r = () -> {
        JOptionPane.showMessageDialog(
                null, new Scratch().getUI(new TileSet("Content/Graphics/tileSets/12x12x3 - tileSet.png", 12, 12, 3)));
        JOptionPane.showMessageDialog(
                null, new Scratch().getUI(new TileSet("Content/Graphics/tileSets/16x16x0 - tileSetItems.png", 12, 12, 3)));
        JOptionPane.showMessageDialog(
                null, new Scratch().getUI(new TileSet("Content/Graphics/tileSets/29x18x1 - roguelikeDungeon_transparent.png", 12, 12, 3)));
    };
    SwingUtilities.invokeLater(r);
}

public final JComponent getUI(TileSet tileSet) {
    JPanel ui = new JPanel();
    JPanel tilePanel = new JPanel();
    tilePanel.setLayout(new GridLayout(12, …
Run Code Online (Sandbox Code Playgroud)

java swing game-development 2d-games

2
推荐指数
1
解决办法
72
查看次数

无法与 Unity 包管理器本地服务器进程 - Unity 建立连接?

我使用的是 Unity 2017、2018、2019,它会影响所有这些版本。我什至尝试重新安装它们,但这个问题始终存在。

game-development game-engine unity-game-engine

2
推荐指数
1
解决办法
7607
查看次数

在游戏中使用状态模式

最近,我尝试在 SFML 中创建 Snake 游戏。但是,我也想用一些设计模式来为以后的编程养成一些好的习惯——那就是状态模式。但是 - 有一些我无法解决的问题。

为了让一切都清楚,我尝试制作了几个菜单——一个主菜单,还有其他的,比如“选项”,或者类似的东西。主菜单的第一个选项会将玩家带到“播放状态”。但是,问题出现了——我认为整个游戏应该是一个独立的模块来实现编程。那么,我应该如何处理程序所处的实际状态?(例如,我们将此状态称为“MainMenu”)。

我应该创建一个名为“PlayingState”的附加状态,它代表整个游戏吗?我该怎么做?如何为单个状态添加新功能?你有什么想法?

c++ design-patterns game-development sfml state-pattern

2
推荐指数
1
解决办法
507
查看次数

Unity手机游戏后端

我想在 Unity 中创建一个简单的三消手机游戏。该游戏将使用 NFT 和区块链功能。我还需要一个游戏服务器。我有创建移动应用程序和游戏的经验,但我对移动游戏的后端开发不太了解。我的第一个想法是在 Node.js 中创建一个自定义服务器。经过快速研究,我意识到已经有很多不同的、已开发的统一服务器解决方案,例如 Mirror 或 Photon。

\n

我的服务器必须具备以下功能:

\n
    \n
  • 做权威服务器,运行游戏的全部逻辑
  • \n
  • 访问 NFT,与智能合约交互并将所有所需的区块链相关数据发送给客户端
  • \n
  • 支持PVP、PVE和合作类型的游戏
  • \n
  • 支持微服务架构
  • \n
  • 允许使用 AWS 或 Google 等服务轻松部署可扩展性
  • \n
  • 公开 API
  • \n
  • ofc 安全且防攻击
  • \n
  • 具备优秀手机游戏所需的所有功能
  • \n
\n

正如我之前所说,我在为手机游戏创建后端方面没有太多经验,而且我真的很困惑我应该选择什么解决方案。我担心创建自定义服务器可能有点过分,但同时,我不知道可用于 Unity 的服务器解决方案是否可以满足我的所有要求。

\n

我\xe2\x80\x99m 想知道:

\n
    \n
  • 用于创建手机游戏后端的最常用技术是什么标准?
  • \n
  • 是否有像 Mirror 或 Photon 这样的 Unity 后端解决方案支持我上面提到的所有要求?
  • \n
  • 游戏严格使用 Mirror 或 Photon 来运行游戏,以及与智能合约交互、公开 API 等的自定义服务器的混合解决方案是否很常见?
  • \n
\n

mobile backend game-development unity-game-engine server

2
推荐指数
1
解决办法
2200
查看次数

在多人游戏中,如何通过套接字有效地发送位置数据?

我目前正在为Unity游戏构建我自己的网络代码(用于学习体验),并且我在"解码数据包"方面遇到了一些严重的延迟.

基本上,我playerObject将它们的位置数据(Vector3(x,y,z))作为JSON字符串发送到服务器,然后服务器将其发送回所有其他播放器.

事物的插座方面很顺利.从创建数据包到收到数据包的延迟非常小.

但是,我让我的客户,当他们试图取消JSON的远程客户端的位置,一个巨大的延迟:

Vector3 remotePos = JsonUtility.FromJson<Vector3>(_command.Substring(5 + _usernameLength));

Json字符串在字符串的开头有一个标识符,表示它是一个Position更新,后跟两个表示用户名长度的数字,然后是用户名(这样远程客户端可以更新正确的playerObject.整个字符串看起来这样的事情.

POS09NewPlayer{"x":140.47999572753907,"y":0.25,"z":140.7100067138672}

从服务器收到此类数据包后,我的客户将执行以下任务:

        int _usernameLength = Int32.Parse(_command.Substring(3, 2));
        string _username = _command.Substring(5, _usernameLength);
        Vector3 remotePos = JsonUtility.FromJson<Vector3>
        if (_username != username)
        {
        playerDict[_username].transform.position = remotePos;
        } 
Run Code Online (Sandbox Code Playgroud)

所有这些都"有效",但在3个客户端同时连接后变得非常迟缓.

我究竟做错了什么?必须有一个重大的缺陷,因为我只为每个.015秒发送3个玩家的更新,其中像战地这样的游戏可以为64个玩家每秒发送60个更新!

任何意见,将不胜感激.

c# multiplayer game-development

1
推荐指数
1
解决办法
2964
查看次数

在 Unity 中游戏对象离开摄像机视图后销毁它

我目前正在 Unity 中制作一款游戏,其中我试图仅在预制件的克隆离开相机视图后才销毁它们,只有在它们首先进入相机视图后才销毁它们。然而,由于某种原因,我的代码在克隆实例化后立即销毁它们。有谁知道我该如何解决这个问题?

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

public class InteractControl : MonoBehaviour
{

    Rigidbody2D rb;
    GameObject target;
    float moveSpeed;
    Vector3 directionToTarget;




    // Use this for initialization
    void Start()
    {
        target = GameObject.Find("White Ball");
        rb = GetComponent<Rigidbody2D>();
        moveSpeed = 3f;

    }

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

    /*void OnTriggerEnter2D(Collider2D col)
    {
        switch (col.gameObject.tag)
        {

            case "ColouredBall Highress":
                BallSpawnerControl.spawnAllowed = false;
                Destroy(gameObject);
                target = null;
                break;

            case "Star":
                Collision collision = new Collision(); …
Run Code Online (Sandbox Code Playgroud)

game-development unity-game-engine collider

1
推荐指数
1
解决办法
5522
查看次数

我的课程是布尔值,我不知道为什么

Button 我开始在文件 main.lua 中使用其余代码创建一个类。一切正常,但现在我想拆分我的代码并创建一个 Button.lua 文件,如下所示:

\n
\nButton = {}\n\nfunction Button:new(x, y, width, height, color, text, callback,arg1)\n  local button = {\n      x = x,\n      y = y,\n      width = width,\n      height = height,\n      color = color,\n      text = text,\n      callback = callback,\n      arg1 = arg1,\n      state = false,\n  }\n  setmetatable(button, self)\n  self.__index = self\n  return button\nend\n\nfunction Button:draw()\n  local color = self.hover and {0.8, 0.8, 0.8} or self.color\n  love.graphics.setColor(color)\n  love.graphics.rectangle("fill", self.x, self.y, self.width, self.height)\n  if self.hover then\n      love.graphics.setColor(1, 1, 1)\n      love.graphics.rectangle("line", …
Run Code Online (Sandbox Code Playgroud)

lua game-development

1
推荐指数
1
解决办法
66
查看次数