我有兴趣使用cocos2d-x进行Android和iOS开发,但不确定它是否准备好迎接黄金时段?cocos2d-x与android上的libgdx相比如何?看起来他们可能会花更多时间在文档上,而功能更新现在很慢.另一方面,LibGDX似乎有问题...我认为Cocos2d-x在iOS和Android上运行更理想.一个主要的C++ +.
使用Cocos2d-x开发的应用程序在哪里?
我目前正在将一个ObjC cocos2d游戏移植到cocos2d-x,但我在尝试创建registerWithTouchDispatcher方法时遇到了一些问题,目前我正在做
void GameLayer::registerWithTouchDispatcher()
{
CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this,0,true);
}
Run Code Online (Sandbox Code Playgroud)
但这会在cocos2d :: CCTouchDispatcher'中出现错误'没有名为sharedDispatcher的成员'.
还有另外一种方法,必须在cocos2d-x中完成吗?
早上好.
我在linux上,使用cocos2d-x Android.
我创建了一个计算圆值的函数.
// Circle point updateCircle()
// x = number of iteration · SamplingPeriod |-|-|-|
// y = A · sine ( 2 · PI · number of iteration · SamplingPeriod / Period )
int iterations = this->getNumberOfIterations();
CCPoint centerPoint = this->getCenter();
float x = centerPoint.x + this->getAmplitude() * cos( 2 * M_PI * iterations * this->getSamplingPeriod() * this->getFrequency() );
float y = centerPoint.y + this->getAmplitude() * sin( 2 * M_PI … 因此,我正在尝试使用cocos2d-x最新版本创建一个简单的应用程序,由于某种原因无法将我的触摸连接起来.这是我的课程:
class GameLayer : public cocos2d::Layer
{
public:
static cocos2d::Layer* createLayer();
void update(float dt);
virtual bool init();
CREATE_FUNC(GameLayer);
private:
bool onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event);
void onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event);
void onTouchEnded(cocos2d::Touch* touch, cocos2d::Event* event);
};
Run Code Online (Sandbox Code Playgroud)
cocos2d::Layer* GameLayer::createLayer()
{
GameLayer *layer = GameLayer::create();
return layer;
}
bool GameLayer::init()
{
if (!cocos2d::Layer::init())
{
return false;
}
this->schedule(schedule_selector(GameLayer::update));
this->setTouchEnabled(true);
return true;
}
void GameLayer::update(float dt)
{
}
bool GameLayer::onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event)
{
cocos2d::log("You touched %f, %f", touch->getLocationInView().x, touch->getLocationInView().y);
return true;
}
void …Run Code Online (Sandbox Code Playgroud) 我作为一名Android程序员工作了不到一年的时间,我刚开始学习Android游戏开发.我选择使用的框架是Cocos2d-x.
我已经看过如何在eclipse中使用Cocos2d-x的指南和教程,但我真的很想知道它是否可以与Android Studio一起使用.
从我读过的内容来看,现在可以在Android Studio中使用gradle构建NDK项目,这是个好消息.不过,我还没有找到任何关于使用Android Studio进行C++编程的信息.Eclipse使用CDC(https://www.eclipse.org/cdt/)插件来实现此目的.
是否有与Android Studio类似的内容?我找到了一些用于IntelliJ平台的C/C++插件,但它们不再更新.
有没有其他人尝过这个?它有用吗?你能为像我这样的新手提供一步一步的指导,他是第一次处理这类问题吗?
谢谢你的时间,
haxm
我找不到任何食谱/教程如何构建调试为Android构建cocos2d-x 3.1项目以及如何在设备上直接调试它.请指出步骤帮助.
我做了什么,我有什么问题:
cd proj.androidcocos compile -p android -m debug --ndk-mode NDK_DEBUG=1 (用调试信息构建)cocos run -p android -m debug 在设备上部署cd jnindk-gdb我收到这个错误:
Nareks-MacBook-Pro:jni Narek$ ndk-gdb
jni/Android.mk:67: *** Android NDK: Aborting. . Stop.
ERROR: The device does not support the application's targetted CPU ABIs!
Device supports: armeabi-v7a armeabi
Package supports: Android NDK:
Run Code Online (Sandbox Code Playgroud)
进入Application.mk我已添加:
APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-10
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.我做错了什么?
编辑:添加ndk-build DUMP_APP_ABI项目jni目录中调用的命令结果:
Nareks-MacBook-Pro:jni Narek$ ndk-build DUMP_APP_ABI
Android NDK: /Users/Narek/NoorGames/Games/test2/proj.android/jni/Android.mk: …Run Code Online (Sandbox Code Playgroud) 我有很多相同的图形但不同的颜色.我想通过从灰度图像着色来优化它.此外,我想在实时精灵对象的游戏过程中,在飞行中改变它的颜色.还逐渐将颜色值从一种颜色类型更改为另一种颜色类型
我一直在设计所有我的横向cocos2dx手机游戏,在2508x1584,"始终可见区域"为2112x1408,所以没有黑色边框或缩放,只是一些裁剪,将限于"可能不可见的区域",如如下所示.
在iPhone X和三星Galaxy S8到货之前,这适用于所有移动设备宽高比.这些设备分别具有19.5:9和18:9的宽高比,将"始终可见区域"从1408降低到1158,这足以让我看起来别无选择,只能重新设计我的所有游戏,如下图所示.
因为当我在iPhone X和三星galaxy S8上运行它时,我将所有以前的游戏设计为更高的可见区域,游戏的顶部和底部显然被切断了.
我是否坚持重新设计这些游戏以使它们适合这种较短的宽高比?还是我在这里忽略了另一种解决方案?
我使用Android NDK来构建我的cocos2dx项目,在Android.mk中,有一个LOCAL_SRC_FILES的定义,其中列出了每个cpp文件.每当我添加一个新的源文件时,我都需要在那里添加它...它看起来像这样:
LOCAL_SRC_FILES := hellocpp/main.cpp \
hellocpp/myclass.cpp \
hellocpp/mynextclass.cpp \
../../Classes/Screens/LaunchScreen.cpp \
Run Code Online (Sandbox Code Playgroud)
但是,头文件可以指定要包含的整个目录,它看起来像这样:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/hellocpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes/Screens
Run Code Online (Sandbox Code Playgroud)
我已经尝试了各种方法来包含整个目录而不是单个文件,LOCAL_SRC_FILES这样每当我添加新文件时我都不需要修改Android.mk构建脚本,但到目前为止,我的所有尝试都失败了.
我试过这个:
#SRC_PATH_HELLOCPP := $(wildcard hellocpp/*.cpp)
#SRC_PATH_CLASSES += $(wildcard ../../Classes/*.cpp)
#LOCAL_SRC_FILES := $(SRC_PATH_HELLOCPP:$(LOCAL_PATH/%=%)
#LOCAL_SRC_FILES += $(SRC_PATH_CLASSES:$(LOCAL_PATH/%=%)
Run Code Online (Sandbox Code Playgroud)
以及:
#LOCAL_SRC_FILES += hellocpp/*.cpp
#LOCAL_SRC_FILES += ../../Classes/*.cpp
Run Code Online (Sandbox Code Playgroud)
两个都不工作......
我有另一个项目与第一个选项很好,我真的不明白为什么它在cocos2dx项目中不起作用...有人知道为什么或知道解决方案吗?或者也许我应该保持原样并且麻烦,因为每个人都这样做.但是这真的很麻烦,希望有人可以提供帮助,这样我们所有人都可以更有成效.
谢谢!
在Sprite Kit(iOS开发)和Cocos2d-x(我知道它几乎是Sprite Kit的灵感,因此他们为什么使用大量相同的工具)中遇到这种情况,我终于决定弄清楚为什么这个发生:
当使用物理引擎时,我创建一个精灵,并为其添加一个physicsBody.在大多数情况下,我了解如何设置类别,碰撞和联系位掩码,以及它们如何工作.问题是实际的位掩码数:
SpriteKit:
static const uint32_t missileCategory = 0x1 << 0;
sprite.physicsBody.categoryBitMask = missileCategory;
Run Code Online (Sandbox Code Playgroud)
的Cocos2D-X:
sprite->getPhysicsBody()->setCategoryBitmask(0x01); // 0001
Run Code Online (Sandbox Code Playgroud)
我完全混淆了为什么在任何一种情况下我都会写0x01或0x1 << 0.我有点认为他们使用的是十六进制,它与32位整数有关.至于我已经能够谷歌,0x01是二进制的0001,十进制是1.0x02是二进制的0010,十进制为2.好的,所以有这些转换,但为什么在世界上我会将它们用于像类别一样简单的东西?
就我的逻辑而言,如果我说玩家类别,敌人类别,导弹类别和墙壁类别,那只是4类.为什么不使用字符串作为类别?或者甚至只是二进制数,任何非CS人都会理解为0,1,2和3?
最后,我很困惑为什么有32种不同的类别?我认为一个32位整数的数字为0-几十亿(当然是无符号的).那么为什么我没有数十亿种不同的可能类别呢?
我不理解某种优化吗?或者这只是他们使用的旧约定,但不是必需的?或者有什么事情发生在那个只有2个学期的大学课程CS培训的人不明白?
cocos2d-x ×10
c++ ×4
android ×3
android-ndk ×2
aspect-ratio ×1
bitmask ×1
ccsprite ×1
game-engine ×1
glsl ×1
ios ×1
libgdx ×1
resolution ×1
sprite-kit ×1