我参与了游戏。它运行良好,但我想在游戏中添加敌人。到目前为止,我在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,精灵
我想在矩形中随机放置一些点。
生成随机的 x, y 坐标不是一个好主意,因为很多时候这些点主要分布在同一区域而不是覆盖整个矩形。
我不需要非常快的算法或最佳覆盖位置,只需要可以在简单游戏中运行的算法,该游戏生成几乎覆盖整个矩形的随机 (x, y)。
在我的特殊情况下,我试图生成一个简单的天空,所以我的想法是在天空矩形中放置近 40/50 颗星星。
有人可以指出我一些常见的算法来做到这一点吗?
我每个人都反复产生敌人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) 当我创建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) 我使用的是 Unity 2017、2018、2019,它会影响所有这些版本。我什至尝试重新安装它们,但这个问题始终存在。
最近,我尝试在 SFML 中创建 Snake 游戏。但是,我也想用一些设计模式来为以后的编程养成一些好的习惯——那就是状态模式。但是 - 有一些我无法解决的问题。
为了让一切都清楚,我尝试制作了几个菜单——一个主菜单,还有其他的,比如“选项”,或者类似的东西。主菜单的第一个选项会将玩家带到“播放状态”。但是,问题出现了——我认为整个游戏应该是一个独立的模块来实现编程。那么,我应该如何处理程序所处的实际状态?(例如,我们将此状态称为“MainMenu”)。
我应该创建一个名为“PlayingState”的附加状态,它代表整个游戏吗?我该怎么做?如何为单个状态添加新功能?你有什么想法?
我想在 Unity 中创建一个简单的三消手机游戏。该游戏将使用 NFT 和区块链功能。我还需要一个游戏服务器。我有创建移动应用程序和游戏的经验,但我对移动游戏的后端开发不太了解。我的第一个想法是在 Node.js 中创建一个自定义服务器。经过快速研究,我意识到已经有很多不同的、已开发的统一服务器解决方案,例如 Mirror 或 Photon。
\n我的服务器必须具备以下功能:
\n正如我之前所说,我在为手机游戏创建后端方面没有太多经验,而且我真的很困惑我应该选择什么解决方案。我担心创建自定义服务器可能有点过分,但同时,我不知道可用于 Unity 的服务器解决方案是否可以满足我的所有要求。
\n我\xe2\x80\x99m 想知道:
\n我目前正在为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个更新!
任何意见,将不胜感激.
我目前正在 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) Button 我开始在文件 main.lua 中使用其余代码创建一个类。一切正常,但现在我想拆分我的代码并创建一个 Button.lua 文件,如下所示:
\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)